首页 > 经验记录 > java > Java web实现文件上传

Java web实现文件上传

 

平时使用的表单提交时,他的enctype是使用的”application/x-www-form-urlencoded”这种格式上传到你的servlet。

在上传文件时,也就是说type==file并且需要提交时,就需要把他变成二进制流的这种编码格式。需要设置成“multipart/form-data”。但是,使用这种格式也会有问题

用这种格式可以用来上传文件,但是其他普通的表单元素还是需要用urlencoded这种编码格式。

这种时候可以写两个表单提交,给file类型的表单元素单独提交

想要俩一起提交,可以给每个表单元素一个ID值,使用JS 的方式提交

 

使用js提交,分别取出表单元素的value值,然后获取表单这个对象本身,定好它的action,自己把其获取的表单元素给拼进url

在手动调用其submit方法提交这个表单。Submit提交的是二进制流数据

(Js取file类型表单元素的value值取到得是文件名字)

 

在servlet里面先获取所有提交上来的表单元素,把他们封装为一个对象先保存进数据库,在进行文件上传的处理

文件提交进servlet的时候,文件会存在一个临时目录里边,我们要做的就是把它从临时目录里移动到web项目的指定位置。此时可以使用jspsmartupload这个jar包。

 

 

有一个叫做SmartUoload的工具类,先把他实例化出来,在调用其配置方法。获取Servlet的配置环境和请求响应参数传给他。实现对其的初始化

 

初始化完成后,使用它的upload方法,这时候就可以另存文件了。

 

再从里面getFiles出来,得到一个Files的集合(此Files是jspsmartupload里面的Files,不是IO包里的)

 

遍历这个文件集合得到一个个File,获取要保存进的文件夹的绝对路径。在获取上传文件的文件名,通过文件名得到后缀名。通过字符串拼接给他一个新名字。

 

在使用saveAs另存为一下。里面传入之前获取的:绝对路径+”/”+新名字。将文件保存进指定目录

 

最后需要把存在于服务器的文件给同步到工作空间,这样就不会在重新部署项目的时候出现文件丢失的问题。所以在做完之后,最好是去服务器的根目录拷贝一下。

 

 

 


EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00