文件上传下载注意事项

目录

 

一、文件上传注意事项

二、文件下载注意事项(我这里只单文件下载)

三、友情链接

四、最后非常感谢网上的原意分享的人儿^_^


一、文件上传注意事项

  1. 文件格式是否符合要求
  2. 文件名称是否有特殊符号,比如+,空格等,在上传的时候最好过滤掉,否则下载会很痛苦的(这点很重要)
  3. 文件上传后内容是否会乱码,尤其是中文
  4. 文件上传的大小,如果是后端文件流形式上传就后端控制,如果想oss那样能够前端上传的就尽可能前端控制
  5. 文件上传后的保存路径,真正的生产中是会有专门的服务器来保存这类文件的,不像我们平时学习的时候一样写死路径或者写个相对路径

二、文件下载注意事项(我这里只单文件下载)

  1. 文件下载方式:很多时候前台可以通过一个a标签加文件路径来下载文件,但是当文件是pdf,txt格式的时候,这种方式文件会直接在浏览器打开,遇到这种情况,我采用的是文件流形式下载文件
  2. 文件下载:路径如果用文件流形式通过浏览器下载文件,那么文件的下载路径怎么确定,我是采用浏览器默认下载路径,至于选择文件下载路径的方式,欢迎各位大神指点迷津
  3. 文件下载请求方式:下载文件,又是浏览器直接下载,那得先发送请求吧,请求强烈建议不要用ajax,因为浏览器下载文件里response里是文件流,而ajax好像只支持json,xml格式的(反正就是不支持文件流,当时被这个搞的头大),我用的是window.location.href发送请求
  4. 文件下载时response处理:那么文件流怎么写,步骤是这样的,我们先从服务器上获取文件输入流,然后读取输入流到输出流,而输出流又加到response里,这几步网上很多,不难,难就难在response的ContentType这个属性的设置,因为我们是浏览器直接下载,不同的文件,这个属性的值是不一样的,比如pdf格式的文件,这个属性是application/pdf,如果是word文档类型的就是application/msword,我这里贴一部分代码出来
            response.setCharacterEncoding("utf-8");
            if(ext=="docx") {
                response.setContentType("application/msword"); // word格式
            }else if(ext=="pdf") {
                response.setContentType("application/pdf"); // word格式
            }
            response.setHeader("Content-Disposition", "attachment; filename=" + name);
            

     

  5. 文件下载时文件名注意:就是上面代码里的name,正文可能乱码,需要用URLEncoder编译,最好配合正则只编译中文,这就是为什么前面上传文件的时候要求过滤掉特殊符号和空格

三、友情链接

  1. java实现word、pdf文件下载功能
  2. 解决URL中有中文的问题,可以放心使用url.opnestream方法
  3. 浏览器js、jquery实现下载文件
  4. 处理url中的特殊字符%等

四、最后非常感谢网上的原意分享的人儿^_^

你可能感兴趣的:(Java+Web)