FileLoad---文件上传

来源:互联网 发布:淘宝商城双人床 编辑:程序博客网 时间:2024/06/03 13:10

实现web开发中的文件上传功能,需要:

在web页面中添加上传项,在Servlet中读取传文件的数据,并保存到硬盘中。

怎么做呢?

<input type="file">标签用于在web页面中添加文件上传输入项,设置文件上传输入项时需注意的是:

1、必须设置input输入项的那么属性,否则浏览器将不会上传文件的数据。

2、必须把form的enctype属性设置为multiparty/form-data,设置该值后,浏览器在上传文件时,将文件数据附带在http请求消息体中,并使用MIME协议对上传的文件进行扫描,以方便接受对方上传的文件进行处理,Servlet原理就是客户端提交的数据不管是什么样子的数据,都是提交在request域里面的,

练习中发现一个问题,以前发布在Tomcat里面的工程,后面发布不一定覆盖的掉!

 

3,如何在Servlet中读取文件上传数据,并保存到硬盘中?

Request对象提供了一个getInpuStream的方法,通过这个方法可以读取到客户端提交过来的数据,

但由于用户可能同时上传多个文件,在Servlet读取编程读取上传数据并解析出相应的文件数据是一项非常麻烦的工作,要想轻松实现文件的上传功能,就用Apache的Commons-fileupload这个开源组件,这个开源组件提供的API使用极其简单,和其他的开源逐渐一样,也需要导入相应的jar包,

文件上传成功,但是文件名时中文的时候就出现乱码,怎么解决呢?原因是enctype="multipart/form-data"这种数据类型使用的二十MIME协议提交的哦!设置request编码好jsp页面的也是无效的,有时候发布到Tomcat事要停止正在运行的TomCat,还要防止被人的恶意行为,上传的文件不能放在被人能够访问的路径下面,上传文件的细节处理,文件名相同不被覆盖,怎么办呢?UUID的算法来保证。windows有一个特点,一个目录下放啊的文件超过1000个,打开就会慢得无法,怎么办呢?大三存储,哈市算法可以。上传成功还需删除临时文件。

文件上传显示上传的进度,以单位kb显示上传进度。阻止非法格式的文件,监听上传进度。

文件的下载程序这么写啊?

Servlet列出所有的下载资源。