开发者社区> 问答> 正文

求助:jspSmartUpload处理下载时文件路径中的空格怎么处理?? 400 报错

求助:jspSmartUpload处理下载时文件路径中的空格怎么处理?? 400 报错 最近在做j2ee的课程设计,用cos处理文件上传,jspSmartUpload处理文件下载,但是在测试过程中发现带空格的文件上传好以后下载时会出错,如~/test/Firefox Key.html会识别成~/test/Firefox,然后就file not found了,请问中间的空格该怎样处理才能正确下载呢?

展开
收起
爱吃鱼的程序员 2020-06-03 16:15:28 557 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    上传后要改个名字1,改成系统允许的名字

    例如 Firefre Key.html 改为 1.html

    ######

    如果不改的话,那么下载的链接要用 URLEncoder.encode 处理一下

    例如 URLEncoder.encode("Firefox Key.html")

    ######

    引用来自“红薯”的答案

    如果不改的话,那么下载的链接要用 URLEncoder.encode 处理一下

    例如 URLEncoder.encode("Firefox Key.html")

    我在使用SmartUpload处理下载是使用这个方法也不行,随后换了一个方法,使用

    String path = request.getParameter("path").trim();
    URLEncoder.encode(path,"UTF-8");
    response.setContentType("application/octet-stream; CHARSET=utf8");
    response.setHeader("Content-Disposition","attachment; filename="+path);
    就可以了,不知为何,这是调用SmartUpload的代码

    if (path == null) {
        response.setContentType("text/html; charset=UTF-8");
    			response.getWriter().print("文件不存在,或者禁止下载!");
    	return;
    }
        InputStream inStream = new FileInputStream(path);
        response.reset();
        SmartUpload su = new SmartUpload();
        su.initialize(this.getServletConfig(), request, response);
        su.setContentDisposition(null);
        su.downloadFile(path);
        byte[] b = new byte[100];
        int len = 0;
        while ((len = inStream.read(b)) > 0) {
             response.getOutputStream().write(b, 0, len); 
        } 
        inStream.close();
    是不是我使用方法不正确啊?

    2020-06-03 17:32:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载