Servlet文件上传文件下载代码实现
https://github.com/ChangMike/file-download-upload-test/tree/master
原始的Servlet文件上传
- 解析原始的http请求数据,截取文件名,截取文件部分
- 使用HttpServletRequest的getInputStream获取文件流
- 把二进制的文件数据转换为ISO-8859-1的字符串表现形式
- 截取文件名,截取文件部分
- 保存到服务器的一个路径下
Servlet3.0文件上传
Servlet技术出现不久时,文件上传仍然是比较有挑战性的。
- 开发者通常会使用商业的文件上传组件。
- 值得庆幸的是,Apache于2003年发布了开源Comments FileUpload。
- 几年之后,Servlet的设计者才意识到文件上传的重要性,最终,文件上传在Servlet3中成了一项内置的特性。
实现步骤
- Servlet添加@MultipartConfig注解
- 使用Part获取文件及文件名
- Part是一个表单元素,submit按钮也是一个part
Servlet3.0多上传文件
- 使用@MultipartConfig指定上传路径
- getParts获取多个文件
- Lambda表达式遍历Parts
- html5 multiple属性
Servlet文件下载
- 文件只要不是放在WEB-INF目录下,浏览器输入路径可以正确下载
- 如果需要权限控制,文件放在WEB-INF目录下
- 指定响应内容类型
- 使用Response.getOutputStream获取ServletOutputStream把文件响应给浏览器