2014文件的上传和.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
20121227 周四 文件的上传和下载 1. What is 文件上传? what is 文件下载? 文件上传:用户通过浏览器向服务器提交文件,并由服务器保存 文件下载:用户通过浏览器从服务器上得到一些文件数据,并在浏览器端保存 2. Why use 文件上传? Why use 文件下载? web应用功能需要 3. How 实现文件上传? ** 实现文件上传的流程 1、在jsp页面添加form表单: (1) input type=file (2) 必须把 form 的 enctype 属性设为 multipart/form-data, enctype 属性取值: application/x-www-form-urlencoded:表单 enctype 属性的默认值。这种编码方案使用有限的字符集,当使用了非字母和数字时,必须用”%HH”代替(H 代表十六进制数字)。对于大容量的二进制数据或包含非 ASCII 字符的文本来说,这种编码不能满足要求。 multipart/form-data:form 设定了enctype=“multipart/form-data”属性后,表示表单以二进制传输数据 。在浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。 (3) 表单提交的方式要是 post(get的请求体有大小限制,而post无大小限制) 注意:enctype=“multipart/form-data”的表单在servlet中不能再像以往那样通过 request.getParameter()那样得到请求中的参数数据(数据格式不对),另有取值的方式 2、为了方便用户处理上传数据,Apache 提供了一个用来处理表单文件上传的开源组件: Commons-fileupload 和Commons-io ,Commons-fileupload 组件从 1.1 版本开始依赖 commons-io 其主要的接口和类有三个: ServletFileUpload 负责处理上传的文件数据,并将每部分的数据封装成一到 FileItem 对象中。 isMultipartContent(HttpServletRequest request) 判断上传表单是否为 multipart/form-data parseRequest(HttpServletRequest request) :得到请求所有表单项的数据对象,返回一 个ListFileItem setFileSizeMax(long fileSizeMax) 设置上传文件的最大值。 setSizeMax(long sizeMax) 设置上传文件总量的最大值 2.DiskFileItemFactory 是创建 FileItem 对象的工厂,在这个工厂类中可以配置内存缓冲区大小和存放临时文件的目录。 setSizeThreshold(int sizeThreshold,File repository ) 设置内存缓冲区的大小,默认值为 10k 当上传文件大于缓冲区大小时,fileupload 组件将使用临时文件缓存上传文件 setRepository(File repository) 指定临时文件目录,默认值为 System.getProperty(java.io.tmpdir) FileItem :代表一个表单项数据,可以获得表单项的数据,可以判断是否为普通表单项 isFormField():为true,为普通表单项;为false,为file表单项 getFieldName() 获取的是普通表单项的表单项名。 getString(encod) 获取的是普通表单项的表单项值。 getName() 获取的是上传文件的简单文件名(有些浏览器(ie)会返回文件的全路径 名,所有在此处最好加以判断) 3. 基本的原理为: FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提交的 request请求也就是一个FileItem的有序组合,FileUpload组件可以解析该request,并返回一个一个的FileItem。而对每一个FileItem,FileUpload组件可以判断出它是普通form表单域还是文件file域,从而根据不同的类型,采取不同的操作--如果是表单域,就读出其值,如果是文件域,就保存文件到服务器硬盘上或者内存中。 4、fileuplpa

文档评论(0)

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

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

1亿VIP精品文档

相关文档