浏览 14160 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-29
对commons fileupload组件的简单封装我们要取得possess传过来的value,一般我们是这么写的: 但是在commons fileupload中我们却需要这么处理: java 代码
按照上面处理的话,很是不爽,因此我想包装一下,使得使用起来符合我们的习惯。 总体设计思想: 1.我们可以像以前那样,传入控件的name,就可以取得该控件的value,因此我想可以遍历所有FileItem,然后把他们存入一个Map中(key中存入fieldname,value中存入该控件的value),这样就可以达到以上目的了。具体实现: 根据以上要求,我写出了一个MutiFileUpload类,代码如下,稍后再做详细解释。
以上代码很简单,看过commons FileUpload组件API的程序员,应该都能看明白。值得注意一下的是:编码问题(setHeaderEncoding),这个方法是从FileUploadBase类里继承的,根据其说明,当读取上传表单的各部分时会用到该encoding,如果没有指定encoding则使用系统缺省的encoding。建议在这里设置成utf-8,并把jsp的charset也设置成utf-8,否则可能会出现乱码。测试demo 好了,下面我就写个简单的demo吧,说明一下MutiFileUpload的用法。
2.新建一个UploadServlet并继承自MutiFileUpload,如下:
3.然后在post方法中如下处理:选择上传文件,然后我们就可以在/root/upload下看到我们上传的文件了。 好了,先写到这里吧,具体应用时,我们可能需要很多变通,比如集成到spring,hibernate中,关键是给出一个想法,我们可以对他进行包装变更,使其更适合我们的系统。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-29
只是封装一下commons的fileupload,那就没有必要继承HttpServlet了吧?再者你写的replace方法跟String的replaceAll有什么区别吗?
|
|
返回顶楼 | |
发表时间:2007-05-29
spiritfrog 写道 只是封装一下commons的fileupload,那就没有必要继承HttpServlet了吧?再者你写的replace方法跟String的replaceAll有什么区别吗?
说实在的,确实没必要继承HttpServlet,最初的考虑是把这个MutiFileUpload类写到commons fileupload组件中,然后让上传文件的servlet直接继承自MutiFileUpload类,所以就成了现在的这个结构。 在实际使用过程中,MutiFileUpload完全可以不继承自HttpServlet,而把它作为一个Helper类或者Util类使用,然后再在上传文件的servlet中调用MutiFileUpload的方法。 replace方法和String的replaceAll功能是一样的,但是replace不支持正则表达式,因为这个方法是我很早以前就写过的方法,所以习惯性的就加进去了。 |
|
返回顶楼 | |
发表时间:2007-05-29
Spring有对MultipleFile的处理,同时支持commons fileupload和cos。
如果不使用spring web,也可以简单的通过一个filter把该功能独立弄出来使用。不用自己实现吧! |
|
返回顶楼 | |
发表时间:2007-05-30
joachimz 写道 Spring有对MultipleFile的处理,同时支持commons fileupload和cos。
如果不使用spring web,也可以简单的通过一个filter把该功能独立弄出来使用。不用自己实现吧! 谢谢指教,我对spring不是太熟悉,这两天去查一下。 |
|
返回顶楼 | |