2011-04-15 59 views
3

我试图开发一个小条纹的项目,允许用户uoload文件,基本实现了ActionBean中看起来像这样:上传文件,如何使用DefaultMultipartWrapperFactory

public class UploadActionBean extends BaseActionBean{ 

private FileBean fileBean; 

private final String fileUpload="/WEB-INF/jsp/file-upload.jsp"; 

public void setFileBean(FileBean fileBean){ 

    this.fileBean=fileBean; 
} 

public FileBean getFileBean(){ 

    return this.fileBean; 
} 

@DefaultHandler 
public Resolution goToFile(){ 

    return new ForwardResolution(fileUpload); 
} 

public Resolution upload() throws IOException{ 

    System.out.println(fileBean.getFileName()); 

    fileBean.getContentType(); 

    fileBean.getSize(); 

    fileBean.save(new File("/Users/enricoiorio/Desktop")); 

    return new ForwardResolution(fileUpload); 
} 

}

正如我说的很简单,JSP是这个样子,也很简单:

<s:form beanclass="stripesbook.action.UploadActionBean" enctype="multipart-form/data"> 

<s:file name="fileBean"/> 

<s:submit name="upload" value="upload"/> 

的应用程序似乎是正确部署,应用程序没有启动问题,但只要我点击上传,我得到以下异常:

net.sourceforge.stripes.exception.StripesRuntimeException: Could not construct a MultipartWrapper for the current request. 

从一个NullPointerException到达:

at net.sourceforge.stripes.controller.multipart.DefaultMultipartWrapperFactory.wrap(DefaultMultipartWrapperFactory.java:151) 

我明白我必须使用DefaultMultipartWrapperFactory类的wrap()方法,但是如何? 我努力寻找解释但没有结果,任何建议的文档?

回答

4

好像你只是失踪Commons FileUpload。尝试将它添加到你的类路径中,看看它是否工作。

+0

嗨卢卡斯thx伟大的建议!我需要的确加上commons-io动作bean现在在fileBean.save(新文件(“/ Users/myname/Desktop”))中抛出一个FileNotFoundException,因为它是一个目录,而不是文件,但我通过File类也可以使用此构造函数将文件写入给定的路径名​​:public File(String pathname),所以基本上我假设构造函数将文件写在已存在文件的顶部,可以用文本完成,但上传时如何照片? – JBoy 2011-04-15 20:31:26

+0

关闭 - 你可以问fileBean传入的文件名(fileBean.getFileName())并将其附加到你的目录中.. new java.io.File(“/ foo/bar /”+ fileBean.getFileName()) – lucas 2011-04-15 20:47:44

+0

关于已经存在的文件,你可以先构造它,然后使用java.io.File.exists(),如果不存在,使你的save()调用 – lucas 2011-04-15 20:51:00

0

我得到了同样的问题。 通过在条带中添加init参数来解决过滤器。

< INIT-PARAM > < PARAM名> MultipartWrapper.Class </PARAM名> < PARAM值> net.sourceforge.stripes.controller.multipart.CommonsMultipartWrapper </PARAM值> </init-param >

+0

hi @ useruser1929841,thx的回复,但我已经放弃了条纹,因为不再支持。 – JBoy 2014-07-28 08:38:30