JavaWeb 文件的上传与下载

最近打算学习java ,根据自己看到的写点东西,方便大家参考,如果对您有用,请点赞

1、准备两个jar包

http://commons.apache.org/proper/commons-fileupload/

http://commons.apache.org/proper/commons-io/

2、建立javaweb工程,在lib 中导入自己的jar 包(lib 目录在WEB-INF中)

3、上传 

前端写上传界面

后端写上传逻辑

try {
    DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
    File tmp=new File(req.getSession().getServletContext().getRealPath("file"));
    fileItemFactory.setRepository(tmp);
    ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
    List<FileItem> list = servletFileUpload.parseRequest(req);
    Iterator<FileItem> items=list.iterator();
    while (items.hasNext()){
        FileItem item=items.next();
        if(item.isFormField()){
            //文本
        }else{
          String fileName=item.getName();
          long size=item.getSize();
          System.out.print(fileName+"\n");
          System.out.print(size);
          InputStream inputStream=item.getInputStream();
          String path=req.getServletContext().getRealPath("file/"+fileName);
          OutputStream outputStream=new FileOutputStream(path);
         int temp=0;
          while ((temp=inputStream.read())!=-1){
              outputStream.write(temp);
          }
          outputStream.close();
          inputStream.close();
          System.out.print("上传成功");
        }
    }


} catch (FileUploadException e){
    e.printStackTrace();
}

4、下载

前端

后端

req.setCharacterEncoding("UTF-8");
 resp.setContentType("application/x-msdownload;charset=utf-8");
 String fileName=req.getParameter("name");
 resp.setHeader("Content-Disposition","attachment;filename="+fileName);
 OutputStream outputStream=resp.getOutputStream();
 String path=req.getServletContext().getRealPath("file/"+fileName);
 InputStream inputStream=new FileInputStream(path);
 int tmp=0;
 while ((tmp=inputStream.read())!=-1){
     outputStream.write(tmp);
 }

 outputStream.close();
 inputStream.close();

 

如果有帮助,请点小♥

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值