文件上传下载

  1. 上传
    • 需要用到commons-io和commons-fileupload两个jar包
    • 上传的表单必须是post请求,且enctype=“multipart/form-data”,表明这个表单数据是多部件的
    • 使用input type=“file” 来选择文件
    • 使用apache组件进行文件上传
      1. 判断是不是文件上传的请求 boolean isUploadFileRequest = ServletFileUpload.isMultipartContent(req);
      2. 创建一个DisFileItemFactory工厂 DiskFileItemFactory factory = new DiskFileItemFactory();
      3. 用上面的工厂对象创建一个解析器准备解析请求数据 ServletFileUpload upload = new ServletFileUpload(factory);
      4. 解析请求数据 List fileItems = upload.parseRequest(req);
      5. 遍历解析后的内容 for (FileItem fileItem : fileItems)
      6. 判断请求内容
        • 如果是普通的请求参数 if (fileItem.isFormField())
          1. getName 取出参数的名字
          2. getString 取出参数的值
        • 如果是文件 else
          1. getName 取出文件名字(IE会带上盘符是一个绝对路径)
          2. getInputStream 获得请求中的文件输入流
          3. 之后自己创建一个输出流,把文件写到磁盘上就可以(记得关闭资源)
  2. 下载
    • 设置响应头 resp.setHeader(“content-disposition”, “attachment;filename=” + 下载后的文件名(带后缀)); 告诉浏览器这是一个附件,准备下载
    • 创建一个输入流,把服务器上的文件读进来
    • 再用 resp.getOutputStream(); 把输入流的内容发送到服务器上
  3. JavaWeb路径问题
    • 由浏览器发出的请求,/代表的是tomcat,仅仅到端口,而不是具体的某个应用
    • 由服务器本身发起的请求,/代表的是tomcat上的具体应用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值