文件上传与下载.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. 文件上传与下载 上传 文件上传概述 实现 web 开发中的文件上传功能,需完成如下二步操作: 在 web 页面中添加上传输入项 在 servlet 中读取上传文件的数据,并保存到服务器硬盘中。 如何在 web 页面中添加上传输入项 ? input type= “file ”标签用于在 web 页面中添加文件上传输入项, 设置文件上传输入项时须注意: 1、必须要设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。 2、必须把 form 的 enctype 属值设为 multipart/form-data. 设置该值后,浏览器在上传文件时, 将把文件数据附带在 http 请求消息体中, 并使用MIME协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理。 3、表单的提交方式要是 post 如何在 Servlet 中读取文件上传数据,并保存到本地硬盘中 ? Request 对象提供了一个 getInputStream 方法,通过这个方法可以读取到客户 端提交过来的数据。 但由于用户可能会同时上传多个文件, 在 servlet 端编程 直接读取上传数据,并分别解析出相应的文件数据是一项非常麻烦的工作, 示例。 为方便用户处理文件上传数据,Apache 开源组织提供了一个用来处理表单 文件上传的一个开源组件( Commons-fileupload ),该组件性能优异,并且 其 API 使用极其简单,可以让开发人员轻松实现 web 文件上传功能,因此 在 web 开发中实现文件上传功能,通常使用 Commons-fileupload 组件实现。 使用 Commons-fileupload 组件实现文件上传,需要导入该组件相应的支撑 jar 包: Commons-fileupload 和 commons-io。 commons-io 不属于文件上传组件的开发 jar 文 件,但 Commons-fileupload 组件从 1.1 版本开始,它工作时需要 commons-io 包的 支持。 文件上传步骤 实现步骤 1、创建 DiskFileItemFactory 对象,设置缓冲区大小和临时文件目录 2、使用 DiskFileItemFactory 对象创建 ServletFileUpload 对象,并设置上传文件的大小限制。3、调用 ServletFileUpload.parseRequest 方法解析 request 对象, 得到一个保存了所有上传内容的 List 对象。 . . 4、对 list 进行迭代, 每迭代一个 FileItem 对象, 调用其 isFormField 方法判断是否是上传文件 True 为普通表单字段,则调用 getFieldName 、getString 方法得到字段名和字段值 False 为上传文件,则调用 getInputStream 方法得到数据输入流,从而读取上传数据。 FileUpload 上传操作核心 API 1、 DiskFileItemFactory 磁盘文件项工厂类 public DiskFileItemFactory(int sizeThreshold, java.io.File repository) 构造工厂时, 指定内存缓 冲区大小和临时文件存放位置 public void setSizeThreshold(int sizeThreshold) 设置内存缓冲区大小,默认 10K public void setRepository(java.io.File repository) 设 置 临 时 文 件 存 放 位 置 , 默 认 System.getProperty(java.io.tmpdir). 内存缓冲区: 上传文件时,上传文件的内容优先保存在内存缓冲区中,当上传文件大小超过缓冲区大小,就会在服务器端产生临时文件 临时文件存放位置: 保存超过了内存缓冲区大小上传文件而产生临时文件 产生临时文件可以通过FileItem 的 delete 方法删除 2、 ServletFileUpload 文件上传核心类 static boolean isMultipartContent(javax.servlet.http.HttpServletRequest request) 判断 request 的编码方式是否为 multipart/form-data java.util.List parseRequest(javax.servlet.http.HttpServletRequest request) 解析 request,将请求体每个部分封装 FileItem 对象,返回 ListFileItem void setFileSiz

文档评论(0)

zsmfjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档