2013-08-01 26 views
0

Hello!Richfaces 4.3,rich:fileUpload,FileUploadEvent getData爲null

ENV:的JBoss 7.1,JSF 2.0,Java 6中,RichFaces的4.3.3

問題:UploadedFile的項目被初始化,item.getName()上傳的文件,但返回名稱item.getData()返回null

我想讀取上傳的文件,但無法訪問內容。

在調試程序的變量視圖我可以看到item.uploadedResource.file = C:\ appservers \ jboss-as-7.1.1.Final \獨立\ TMP \工作\ jboss.web \默認主機\ iCargo \ richfaces_uploaded_file_8359107924056551868.tmp,但在此位置沒有文件。

的web.xml:

<context-param> 
    <param-name>createTempFiles</param-name> 
    <param-value>true</param-value> 
</context-param> 

形式:

<h:form enctype="multipart/form-data"> 
    <rich:fileUpload id="upload" fileUploadListener="#{actionBean.uploadListener}" 
    acceptedTypes="xls,xlsx" immediateUpload="true" maxFilesQuantity="1"> 
    </rich:fileUpload> 
</h:form> 

豆:

private UploadedFile item; 
public void uploadListener(FileUploadEvent event) throws Exception { 
    item = event.getUploadedFile(); 
} 
+0

你是否在服務器上發生異常? – HashimR

+0

沒有控制檯是明確的,但我剛剛發現該文件實際上正在適當的位置一秒鐘,然後disapears :)它是可見的,當我停在斷點「item = event.getUploadedFile();」線。我是否必須以某種方式持續保存此文件才能在會話中使用它? – Karol

+0

將'createTempFiles'參數值更改爲'false' ... – HashimR

回答

0

按照Richfaces demo fileUpload documentation.

createTempFiles布爾屬性,它定義上傳的文件是存儲在臨時文件中還是存儲在偵聽器中,就像byte []數據(在本例中爲false)一樣。

所以,你需要createTempFiles參數值的方式改變爲false,這將是提供給聽者byte[]

希望這會有所幫助。

編輯:

只要按照演示的例子來獲取上傳文件的數據。

+0

createTempFiles = false,我得到文件刪除失敗:java.io.IOException:文件刪除失敗,緊隨在FileInputStream之後fis =(FileInputStream)event.getUploadedFile()。getInputStream();在uploadListener方法:(哦,我做了休耕的例子徹底 – Karol

+0

確定。很少清理和重新啓動,把bis =新的ByteArrayInputStream(event.getUploadedFile()。getData());到聽衆和奇蹟般地所有鏈輪開始工作。時間HashimR。 – Karol

+0

沒問題。請標記答案正確(如果它對你有幫助)。 – HashimR

相關問題