文件的上传与下载

所需jar包:commons-fileupload-1.2.1.jar commons-io-2.0`

JSP:

    <form action="UploadFile" method="post" enctype="multipart/form-data">
        上传文件1:<input type="file" name="filename"><br>
        上传文件2:<input type="file" name="filename"><br>
        <input type="submit" value="提交">
    </form>

Servlet:
步骤:
1.创建文件属性的工厂类
DiskFileItemFactory df=new DisFileItemFactory;
2.使用工厂类来创建解析二进制流的对象
ServletFileUpload sf=new ServletFileUpload(df);
3.设置编码
sf.setHeaderEncoding=”utf-8”
4.解析二进制流,从中获取解析到的二进制流数据
List fileItems=sf.parseRequest(request);
5.从流中获取这个流对象
for(FileItem file:fileItems){
InputStream is=file.getInputStream();
//指定文件上传路径 如img文件夹
String path=request.getSession().getServletContext().getRealPath(“img”)+”\”+file.getName()
//输出流读
FileOutputStream fos=new FileOutputStream(new File(path));
int i=0;
while((i=is.read)!=-1){
fos.write(i)
}
//关流
fos.close();
is.close();
}



文件下载
通过链接下载,浏览器会自动识别文件,遇到不认识的格式就下载,认识的就打开,如果是图片就直接打开,是压缩包就下载,例:
a href=”/FileUpload/img/03.zip”>压缩包
a href=”/FileUpload/img/1.jpg”>图片

此处主要是通过Servlet下载
下载列表:br
a href=”filedown?filename=1.jpg”>图1 br
a href=”filedown?filename=上传秘籍.txt”>上传秘籍
Servlet:
步骤:
1.得到请求文件名
String filename=request.getParameter(“filename”);
2.得到下载的文件路径
String path=request.getSession().getServletContext().getRealPath(“img”).
//添加响应头信息
response.addHeader(“Content-type”,”application/octet-stream”);
//也可以设置响应头
// response.setContentType(getServletContext().getMimeType(filename));
response.addHeader(“Content-Disposition”,”attachment;filename=”+URLEncoder.encode(filename,”utf-8”)); //URLEncoder.encode将指定的文件的编码格式指定”);
//读取目标文件
String fullFilename = path+”\”+filename;
InputStream is=new FileInputStream(fullFilename);
OutputStream os=response.getOutputStream();
int i=0;
while((i=is.read())!=-1){
os.write(i);
}
os.close();
is.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值