我試圖開發一個小條紋的項目,允許用戶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