使用Servlet实现文件上传与下载

1.导包

首先要导入工具包commons-fileupload.jar和commons-io.jar. 如下图:
导包

2.上传界面:

1.首先from的enctype必须使用:multipart/form-data
2.然后input的type="file"	  如下图所示。
3.使用post方法提交

在这里插入图片描述

3.上传文件代码实现



  //创建工厂实现类
            FileItemFactory fileItemFactory=new DiskFileItemFactory();
            ServletFileUpload servletFileUpload =new ServletFileUpload(fileItemFactory);
            try {
                //解析上传的信息
                List<FileItem> list = servletFileUpload.parseRequest(req);
                //遍历上传的信息--解析表单内的内容
                for (FileItem fileItem : list) {
                    if (fileItem.isFormField()) {
                    //普通表单信息
                        System.out.println("表单属性" + fileItem.getFieldName());
                        System.out.println("表单value值" + fileItem.getString());
                     
                    }else {   //文件信息
                           System.out.println("表单属性" + fileItem.getFieldName());
                            System.out.println("上传的文件名:" + fileItem.getName());
                            //将上传的文件保存到 C:\up\file文件下
                            fileItem.write(new File("C:\\up\\file\\" + fileItem.getName()));
                        
                        }
                    }catch (Exception e) {
              					  e.printStackTrace();
          					  }

4.文件下载代码实现

  		String DownFileName="测试文件.txt";
     	InputStream resourceAsStream = null;
        ServletOutputStream outputStream=null;
 ServletContext servletContext = getServletContext();
 //获取要下载的文件
            String mimeType = servletContext.getMimeType("C:\\up\\file\\" + DownFileName);
//设置文件在下载时候的名字
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(DownFileName, "UTF-8"));
            //设置下载文件类型
            resp.setContentType(mimeType);

//读取要下载的文件内容
             resourceAsStream = new FileInputStream("C:\\up\\file\\" + DownFileName);
           outputStream = resp.getOutputStream();
           //实现浏览器下下载功能
            IOUtils.copy(resourceAsStream, outputStream);
            return;

5.成果展示

1.上传界面:
文件上传界面
2.文件下载界面:

文件下载界面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值