文件的上传与下载

文件的上传介绍

  1. 要有一个form标签,method=post 请求

  2. form标签的 encType 属性值必须为multipart/form-data 值

  3. 在form标签中使用input type=file添加上传的文件

  4. 编写服务器代码接收,处理上传的数据。

    文件上传时发送的HTTP协议内容

commons-fileupload.jar常用API介绍说明

1、导入commons-fileupload.jar和commons-io.jar包

2、包中常用类:

ServletFileUpload类,用于解析上传的数据。

Fileltem类, 表示每一个表单项。

boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);

判断当前上传的数据格式是否是多段的格式。

public List<Fileltem> parseRequest(HttpServletRequest request)

解析上传的数据

boolean FileItem.isFormField()

判断当前这个表单项,是否是普通的表单项。还是上传的文件类型。

true 表示普通类型的表单项

false 表示上传的文件类型

String FileItem.getFieldName();

获取表单项name属性值

String FileItem.getString();

获取当前表单项的值

String FileItem.getName();

获取上传的文件名

String FileItem.write( file );

将上传的文件写到 参数file所指向的磁盘上

文件下载的实现

response.getoutputStream( ) ;

servletContext.getResourceAsStream();

servletContext.getMimeType();

response.setContentType();

response.setHeader("Content-Disposition", "attachment; fileName=1.jpg"); 这个响应头告诉浏览器。这是需要下载的。而attachment表示附件,也就是下载的一个文件。fileName=后面,示下载的文件名。

完成上面的两个步骤,下载文件是没问题了。但是如果我们要下载的文件是中文名的话。你会发现,下载无法正确显示出中文名。

原因是在响应头中,不能包含有中文字符,只能包含ASCII码。

解决方法:

 

通过判断请求头中 User-Agent 这个请求头携带过来的浏览器信息即可判断出是什么浏览器

String ua = request.getHeader("User-Agent");

// 判断是否是火狐浏览器

if (ua.contains("Firefox")) {

// 使用下面的格式进行 BASE64 编码后

String str = "attachment; fileName= " + " = ? utf-8?B?"

new BASE64Encoder().encode("中文.jpg".getBytes("utf-8")) + "?=";

// 设置到响应头中

response.setHeader("Content-Disposition", str);

} else {

// 把中文名进行 UTF-8 编码操作。

String str = "attachment; fileName=" + URLEncoder.encode("中文.jpg", "UTF-8");

// 然后把编码后的字符串设置到响应头中

response.setHeader("Content-Disposition", str);

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心非柠檬为何心酸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值