2011-04-15 89 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