Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1187129
  • 博文数量: 89
  • 博客积分: 10546
  • 博客等级: 上将
  • 技术积分: 1510
  • 用 户 组: 普通用户
  • 注册时间: 2004-10-16 01:24
文章分类

全部博文(89)

文章存档

2012年(7)

2011年(4)

2010年(5)

2009年(52)

2008年(21)

分类: Java

2009-03-24 22:23:29

电子相册,论坛注册添加一个个性化图标,等等,这些都是很常见的 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 限制的整个表单上传数据的大小。

单个文件上传

创建多文件上传

创建上传文件页面。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
"">
<%@taglib prefix="stripes" uri="" %>
<%@taglib prefix="c" uri="" %>



Upload File Page


Upload File!






File ${loop.index+1}:







创建 ActionBean,处理文件上传,一个List 包装上传的文件。

public class MultiUploadActionBean extends BaseActionBean {

private final static Log log = LogFactory.getLog(MultiUploadActionBean.class);
private List uploadFiles =new ArrayList();

public List getUploadFiles() {
return uploadFiles;
}

public void setUploadFiles(List uploadFiles) {
this.uploadFiles = uploadFiles;
}

@DefaultHandler
public Resolution preUpload() {
return new ForwardResolution("/upload2.jsp");
}

public Resolution upload() {

for (FileBean uploadFile : uploadFiles) {
if (uploadFile != null) {
log.debug("Upload File :" + uploadFile.getFileName());
log.debug("File size:" + uploadFile.getSize());
String rootPath = getContext().getServletContext().getRealPath("/");
try {
uploadFile.save(new File(rootPath + "/public/" + uploadFile.getFileName()));
} catch (IOException ex) {
log.debug("Upload file exception, root cause @" + ex);
}
}
}

return new ForwardResolution("/success2.jsp");
}
}

创建结果页面。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="" %>
"">




Upload Result Page


Uploaded Successfully!


File Name is:




${fileVar.fileName}






阅读(2654) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~