电子相册,论坛注册添加一个个性化图标,等等,这些都是很常见的 web 应用,都需要文件上传功能把本地的文件上传到远程的服务器。
与普通的 Form 不同的是,文件上传的表单 form 标签必须添加一个 enctype="multipart/form-data" 属性,当使用标签 stripes:form 时它会自动添加这一属性。当表单提交后,表单数据以字节流的方式传递到远程服务器。如果自己分析上传表单内容,是件麻烦事。
cos 和 commons-fileupload 是两种主流的上传工具,内置了表单分析方法。 Stripes 对他们进行了包装,不需要了解两种工具的上传操作的细节。提供了统一的接口,从一种实现切换到另一种实现,不需要修改任何代码。
基于程序的向前的兼容性考虑,Stripes 自带了 cos ,你可以通过简单的配置决定使用哪一种后端实现。如果你想使用 commons-fileupload 后端来处理文件上传,在 Stripes Filter 上添加一个初始化参数。
MultipartWrapper.Class
net.sourceforge.stripes.controller.multipart.CommonsMultipartWrapper
你可以从 上下载最新的 Commons FileUpload 。同时它还依赖其它 Commons包,你至少要添加一个 Commons IO。
你可以通过另外一个参数 FileUpload.MaximumPostSize 来控制上传文件的大小,但必须注意的是这一参数控制的是整个上传表单的数据大小,而不是文件的大小。一般情况下,其它输入字段的体积相对较小,如果你允许上传体积为 1mb 以上的文件,这些体积几乎可以忽略不计。
![]() | 警告 |
|---|---|
FileUpload.MaximumPostSize 限制的整个表单上传数据的大小。 |
单个文件上传
创建多文件上传
![[警告]](file:///home/hantsy/Projects/dbktools/stripes-tutorial/build/html/admonitions/warning.gif)