Servlet 文件上传/下载
- 文件上传 : 将客户端的资源通过网络传输的方式提交到远程web服务器的过程
- 文件下载 : 将远程web服务器通过网络传输的方式同步到客户端的过程
Servlet 文件上传
- 基于Servlet3.0 API的文件上传
- apache 提供的 fileupload 文件上传
基于Servlet3.0 API的文件上传
使用表单进行文件的上传,同时需要满足2个条件, 1. 必须采用 POST提交, 2. 必须设置 enctype=multipart/form-data 以流的方式进行数据提交
在 Servlet的类上,添加一个注解 @MultipartConfig 用来标记该Servlet支持文件上传
通过 Part part = request.getPart(key) 来获取上传的文件对象
Part 对象常见的方法
- getSubmittedFileName() : 获取上传的文件名
- getSize() : 获取上传的文件大小
- getContentType() : 获取文件的媒体类型
- getName() : 获取 上传文件的表单 name值
- write(filename) : 将上传的文件写入到 filename 对应的磁盘位置
- getInputStream() : 将上传的文件对象写入到输入流中
Servlet 文件下载
-
使用 response.getOutputStream 获取 输出流,将要下载的资源通过 得到的 输出 流 写入到浏览器
-
可以下载的头信息
Content-type : 设置下载的资源的媒体类型, 可以不设置
Content-length : 设置下载资源的大小, 可以不设置
Content-Disposition : 设置内容附件 (必须设置)
attachment;filename=xxx : 设置以附件的形式,文件名为 xxx 进行下载
inline;filename=xxx : 设置文件以预览的形式在浏览器中显示,一般适用于 图片、纯文本
如果没有设置Content-Disposition,默认是inline
Servlet 返回 JSON
- 将查询的结果使用 FastJson 转成 JSON格式的字符串(JSON的序列化)
- 设置响应头信息 Content-Type 值为 application/json;charset=UTF-8
response.setContentType("application/json;charset=UTF-8")
response.setHeader("Content-Type", "application/json;charset=UTF-8")
- 使用 Writer向浏览器写入 JSON格式的字符串
response.getWriter().write(jsonstr)
向浏览器写入 JSON格式的字符串