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