Struts2文件上传(一):Common-FileUpload
2009-09-18 00:00:00 来源:WEB开发网文件上传是许多项目都遇到的需求,Struts2中也带有文件上传功能,但它是利用的java领域的其他俩个常用的文件上传的项目:Common- FileUpload和COS,在了解Struts2之前让我们了解下怎样使用Common-FileUpload来实现文件上传以及文件上传实现过程中应该注意的问题。
在Common-FileUpload中,它把从客户端提交过来的表单封装成一个个FileItem对象,这也是它实现文件上传功能的核心类。另一个很重要的类就是FileUploadBase,他的功能就是解析请求(request),如进行上传文件大小验证,请求类型验证(文件上传的enctype要设置成multipart/form-data)等。我们经常用到它的子类ServletFileUpload。在FileUploadBase解析 request的过程中会将文件保存到内存,如果文件大小大于我们设置的缓存的大小,它将把文件的其他内容保存到一个临时目录,当我们对FileItem 对象实现正真上传时会从内存区或临时目录将文件保存到正真的上传目录。而我们要做的就是进行简单的配置,可以用很少的代码就可以实现文件上传,而不用直接与IO流打交道。首先将文件上传过程中应注意的地方了解下:
1.request请求的方法一定要是POST:method="post"
2.request请求的类型一定要是multipart/form-data: enctype="multipart/form-data"
3.在对DiskFileItemFacotry设置过程中repository参数代表文件保存的临时目录,如果不设置,系统将以System.getProperty("java.io.tmpdir")代表的目录作为临时目录。
4.DiskFileItemFacotry中的sizeThreshold参数代表保存到内存的大小,如果当个上传文件的大小小于这个值,则这个文件会暂时保存到内存中。如果大于这个值,则多的部分会保存到临时目录中。单位为B。
5.ServletFileUpload中的sizeMax参数是代表上传文件的总大小,单位为B
更多精彩
赞助商链接