WEB文件的上传与下载

上传人:油条 文档编号:48892207 上传时间:2018-07-21 格式:PPT 页数:12 大小:148.50KB
返回 下载 相关 举报
WEB文件的上传与下载_第1页
第1页 / 共12页
WEB文件的上传与下载_第2页
第2页 / 共12页
WEB文件的上传与下载_第3页
第3页 / 共12页
WEB文件的上传与下载_第4页
第4页 / 共12页
WEB文件的上传与下载_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《WEB文件的上传与下载》由会员分享,可在线阅读,更多相关《WEB文件的上传与下载(12页珍藏版)》请在金锄头文库上搜索。

1、高级软件人才实作培训专家 !文件的上传与下载讲师:梁桐IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! 文件上传概述l实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项在servlet中读取上传文件的数据,并保存到服务器硬盘中。l如何在web页面中添加上传输入项? 标签用于在web页面中添加文件上传输入项,设 置文件上传输入项时须注意:1、必须要设置input输入项的name属性,否则浏览器将不会发送上 传文件的数据。、必须把form的enctype属值设为multipart/form-data.设置该 值后,浏览器在上传文件时,将把文件数

2、据附带在http请求消息体 中,并使用协议对上传的文件进行描述,以方便接收方对 上传数据进行解析和处理。3、表单的提交方式要是postIT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! 文件上传处理1l如何在Servlet中读取文件上传数据,并保存到本地硬盘 中?Request对象提供了一个getInputStream方法,通过这个方法可 以读取到客户端提交过来的数据。但由于用户可能会同时上传 多个文件,在servlet端编程直接读取上传数据,并分别解析出 相应的文件数据是一项非常麻烦的工作。IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! 文件上传处

3、理2l如何在Servlet中读取文件上传数据,并保存到本地硬盘 中? 为方便用户处理文件上传数据,Apache 开源组织提供了一个用 来处理表单文件上传的一个开源组件( Commons-fileupload ), 该组件性能优异,并且其API使用极其简单,可以让开发人员轻 松实现web文件上传功能,因此在web开发中实现文件上传功能 ,通常使用Commons-fileupload组件实现。l使用Commons-fileupload组件实现文件上传,需要导入 该组件相应的支撑jar包:Commons-fileupload和 commons-io。commons-io 不属于文件上传组件的开发 j

4、ar文件,但Commons-fileupload 组件从1.1 版本开始, 它工作时需要commons-io包的支持。IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! fileupload组件工作流程IE浏览器上传文件上传文件2普通字段WEB服务器requestServletFileupLoadDiskFileItemFactory代表普通字段的 FileItem代表上传文件 FileItem代表上传文件 FileItemisFormFieldgetFieldNamegetStringgetInputStreamgetNamegetInputStreamgetNameIT

5、资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! 文件上传案例l实现步骤 、创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录 、使用DiskFileItemFactory 对象创建ServletFileUpload对象,并设置上传文件 的大小限制。 、调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存 了所有上传内容的List对象。 、对list进行迭代,每迭代一个FileItem对象,调用其isFormField方法判断是否 是上传文件 True 为普通表单字段,则调用getFieldName

6、、getString方法得到字段名 和字段值 False 为上传文件,则调用getInputStream方法得到数据输入流,从而读 取上传数据。l编码实现文件上传IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! Tip:核心APIDiskFileItemFactorylDiskFileItemFactory 是创建 FileItem 对象的工厂,这 个工厂类常用方法:public DiskFileItemFactory(int sizeThreshold, java.io.File repository) 构造函数public void setSizeThreshold(

7、int sizeThreshold) 设置内存缓冲区的大小,默认值为10K。当上传文件大于缓冲区 大小时, fileupload组件将使用临时文件缓存上传文件。public void setRepository(java.io.File repository) 指定临时文件目录,默认值为 System.getProperty(“java.io.tmpdir“).IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! Tip:核心APIServletFileUploadlServletFileUpload 负责处理上传的文件数据,并将表单中每个输 入项封装成一个 FileItem

8、 对象中。常用方法有:boolean isMultipartContent(HttpServletRequest request) 判断上传表单是否为multipart/form-data类型List parseRequest(HttpServletRequest request)解析request对象,并把表单中的每一个输入项包装成一个fileItem 对象,并返回一个保存了所有FileItem的list集合。 setFileSizeMax(long fileSizeMax)设置单个上传文件的最大值setSizeMax(long sizeMax) 设置上传文件总量的最大值setHeaderE

9、ncoding(java.lang.String encoding)设置编码格式,解决上传文件名乱码问题setProgressListener(ProgressListener pListener)实时监听文件上传状态IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! Tip:核心APIFileItemlFileItem 用来表示文件上传表单中的一个上传文件对象或者普通 表单对象 boolean isFormField() 判断FileItem是一个文件上传对象还是普 通表单对象l如果判断是一个普通表单对象String getFieldName() 获得普通表单对象的nam

10、e属性 String getString(String encoding) 获得普通表单对象的value属性 ,可以用encoding进行编码设置l如果判断是一个文件上传对象String getName() 获得上传文件的文件名(有些浏览器会携带客户 端路径)InputStream getInputStream() 获得上传文件的输入流delete() 在关闭FileItem输入流后,删除临时文件IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! Tip:上传文件的存放问题l文件存放位置 为保证服务器安全,上传文件应保存在应用程序的 WEB-INF目录下,或者不受WEB服务

11、器管理的目 录。 为防止多用户上传相同文件名的文件,而导致文件 覆盖的情况发生,文件上传程序应保证上传文件具 有唯一文件名。 为防止单个目录下文件过多,影响文件读写速度, 处理上传文件的程序应根据可能的文件上传总量, 选择合适的目录结构生成算法,将上传文件分散存 储。IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! Tip:文件下载lWeb应用中实现文件下载的两种方式 方式一 超链接直接指向下载资源 方式二 程序实现下载需设置两个响应头: 设置Content-Type 的值为:下载文件对应MIME 类型、 Web 服务器希望浏览器不直接处理相应的实体内容,而 是由用户选择将相应的实体内容保存到一个文件中,这需 要设置 Content-Disposition 报头。 在设置 Content-Disposition 之前一定要指定 Content- Type.IT资讯交流网 WWW.IT315.ORG高级软件人才实作培训专家 ! Tip:下载案例l遍历指定目录下的所有文件显示给用户,并允许用户 完成下载(树的遍历)l中文附件名乱码处理IT资讯交流网 WWW.IT315.ORG

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号