java中的文件上传、下载

(1)上传
如果有文件组件,必须采用post提交组件;
get提交方式将参数暴露在url地址栏中,参数只能是字符串,并且长度最多为233个字符;
post提交方式不会将参数暴露在url地址栏中,相对安全,支持二进制数据传参,大小没有限制;
enctype=multipart/form-data 表示符合表单数据;
file类型的标签必须有name属性;

<form action="/register" method="post" enctype="multipart/form-data">
<input type="file" name="myPhoto">

获取上传的文件资源

Part part = request.getPart("myPhoto");
String disposition = part.getHeader("content-disposition");
//获取上传文件的文件名
String fileName = disposition.substring(disposition.lastIndexOf("=")+2,disposition.length()-1);
System.out.println(fileName);
//获取upload文件夹的路径
String savePath = getServletContext().getRealPath("upload");
System.out.println(savePath);
//获取输入流
InputStream in = part.getInputStream();
//通过时间戳设置新名字
String newFileName = savePath+"\\"+new Date().getTime()+fileName;
//创建文件输出流
FileOutputStream out = new FileOutputStream(newFileName);
int len = -1;
byte[] bytes = new byte[1024];
while ((len=in.read(bytes)) != -1){
    out.write(bytes,0,len);
}
out.close();
in.close();

(2)下载

<a href='路径?fileName=文件名'>下载资源</a>
//获取文件名
String fileName= request.getParameter("fileName");
//获取路径
String downloadPath = getServletContext().getRealPath("路径名");
String filePath = downloadPath + "\\" +fileName;
//设置响应是下载操作,会去掉用浏览器自带的下载工具,filename设置下载后的文件名
response.setHeader("content-disposition","attachment;filename="+fileName);

FileInputStream in= new FileInputStream(filePath);
ServletOutputStream out = response.getOutputStream();

int len = -1;
byte[] bytes = new byte[1024];
while ((len=in.read(bytes)) != -1){
    out.write(bytes,0,len);
}
out.close();
in.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小场面丨不慌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值