commons FileUpload第一日

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

我主要使用的DiskFileUpload类和FileItem接口。其它类和接口还很少使用。

DiskFileUpload的实例upload,然后设置内存使用大小、上传文件的限制大小以及缓冲硬盘区域。我主要作图片的上传,所以,缓冲硬盘区域的设置不是太重要。但是另外两个设置就一定要注意,要不然恶意上传会让系统崩掉地!

DiskFileUpload upload = new DiskFileUpload();

upload.setSizeTheshold(MemorySize);

upload.setSizeMax(FileSize);

upload.setRepositoryPath(TempDirectory);

说明一下,我这里知道表单提交中一定有file控件,所以就省去了判断是否有file提交的那一步。当然,那个判断方法已经在用户指南里说的很清楚了。

下面就要开始接受表单的工作了。通过编译或者说解译request,来获得表单提交项。然后判断表单项是否是普通项。如果是,那就简单啦,只要获得字段名和字段值就搞定;如果不是,那我们的工作就真的要开始了,获得文件后缀,定义文件名,向服务器写文件。当然这里可以使用文件在客户端的名字,不过我觉得这样不太安全,谁要是传了一段恶意代码上来,至少应该让他没那么容易找到嘛,呵呵!

//获得文件后缀

String fullPath = item.getName();

int dotIndex = fullPath.indexOf(".");

String fileType = full.Path.substring(dotIndex);

//定义文件名

//这里采用根据时间随机生成

String fileName = String.valueOf(new java.util.Date().getTime()) + fileType;

//下面就是按照指南写啦~

...

当然我还没有做更细致的判断,下一步应该把能够上传的文件类型的contextType都获得以后,就可以判断哪些类型可以上传了。

今天遇到一个还没有解决的问题,就是我把MemorySize、FileSize、SavePath、TempDirectory记录在.properties文件里,路径都可以正确存取,但是两个数字却无法正常从String转换到int,郁闷。。。我还要在去了解一着方面的东西。下次把补充的内容和这个问题解决的方法一起帖上来。OHOH~今天就到这里吧!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航