我试图开发一个小条纹的项目,允许用户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()方法,但是如何? 我努力寻找解释但没有结果,任何建议的文档?
嗨卢卡斯thx伟大的建议!我需要的确加上commons-io动作bean现在在fileBean.save(新文件(“/ Users/myname/Desktop”))中抛出一个FileNotFoundException,因为它是一个目录,而不是文件,但我通过File类也可以使用此构造函数将文件写入给定的路径名:public File(String pathname),所以基本上我假设构造函数将文件写在已存在文件的顶部,可以用文本完成,但上传时如何照片? – JBoy 2011-04-15 20:31:26
关闭 - 你可以问fileBean传入的文件名(fileBean.getFileName())并将其附加到你的目录中.. new java.io.File(“/ foo/bar /”+ fileBean.getFileName()) – lucas 2011-04-15 20:47:44
关于已经存在的文件,你可以先构造它,然后使用java.io.File.exists(),如果不存在,使你的save()调用 – lucas 2011-04-15 20:51:00