免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1971 | 回复: 0
打印 上一主题 下一主题

Stripes tips(14)- 文件上传 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-24 22:23 |只看该作者 |倒序浏览

               
电子相册,论坛注册添加一个个性化图标,等等,这些都是很常见的 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
       
       
你可以从
Apache Commons
上下载最新的 Commons FileUpload 。同时它还依赖其它 Commons包,你至少要添加一个 Commons IO。
你可以通过另外一个参数 FileUpload.MaximumPostSize 来控制上传文件的大小,但必须注意的是这一参数控制的是整个上传表单的数据大小,而不是文件的大小。一般情况下,其它输入字段的体积相对较小,如果你允许上传体积为 1mb 以上的文件,这些体积几乎可以忽略不计。
file:///home/hantsy/Projects/dbktools/stripes-tutorial/build/html/admonitions/warning.gif
警告FileUpload.MaximumPostSize 限制的整个表单上传数据的大小。单个文件上传
创建JSP 文件。
   
   
        
        Upload File Page
   
   
        Upload File
        
        
            
            
        
        
            
                Upload more than one files at the same time.
            
        
   
               
               
创建 ActionBean 处理文件上传。
public class UploadActionBean extends BaseActionBean {
    private final static Log log = LogFactory.getLog(UploadActionBean.class);
    private FileBean uploadFile;
    private long uploadFileSize;
    public long getUploadFileSize() {
        return uploadFileSize;
    }
    public void setUploadFileSize(long uploadFileSize) {
        this.uploadFileSize = uploadFileSize;
    }
    public FileBean getUploadFile() {
        return uploadFile;
    }
    public void setUploadFile(FileBean uploadFile) {
        this.uploadFile = uploadFile;
    }
    public Resolution upload() {
        log.debug("Upload File :" + uploadFile.getFileName());
        log.debug("File size:" + uploadFile.getSize());
        log.debug("File Content type:" + uploadFile.getContentType());
        this.uploadFileSize = 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("/success.jsp");
    }
}
               
               
上传结果页面。
   
        
        Upload Result Page
   
   
        Uploaded Successfully!
        File Name is: ${actionBean.uploadFile.fileName}.
        File Size is: ${actionBean.uploadFileSize}
   
               
               
运行程序,上传一个文件进行测试。
多文件上传
创建上传文件页面。
   
        
        Upload File Page
   
   
        Upload File!
        
        " scope="page"/>
        
            
                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");
    }
}
               
               
创建结果页面。
   
        
        Upload Result Page
   
   
        Uploaded Successfully!
        File Name is:
        
            
                ${fileVar.fileName}
            
        
   
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1096/showart_1878430.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP