通常在Play框架中,當您上傳文件時,它將顯示爲控制器的File對象,並且文件本身存儲在tmp文件夾中。在GAE中,這將不起作用,因爲GAE不允許寫入文件系統。玩! + GAE +文件上傳
如何上傳文件並直接在控制器中訪問流?
通常在Play框架中,當您上傳文件時,它將顯示爲控制器的File對象,並且文件本身存儲在tmp文件夾中。在GAE中,這將不起作用,因爲GAE不允許寫入文件系統。玩! + GAE +文件上傳
如何上傳文件並直接在控制器中訪問流?
所以我想出瞭解決方案。在控制器中,不是傳入一個File對象,而是傳入一個byte [],並使用ByeArrayInputStream將其轉換爲更有用的形式。在我的情況下,我需要將文件數據傳遞給採用InputStream的csv解析器。
如何在使用字節數組時獲取上傳的文件名? – Somatik 2012-01-13 09:35:06
爲了我的目的,我不需要知道文件名,所以我不是100%確定的,但是您可能能夠在請求標頭中找到某處? – 2012-01-17 15:25:38
@Somatik您可以像http://stackoverflow.com/a/7571000/467650中所做的那樣使用Upload對象而不是字節數組。感謝羅伊 – 2012-07-18 14:39:27
我不熟悉的遊戲框架,要麼但通常,對於多部分請求(如文件上傳),
爲Apache公地上傳,您可以使用DiskFileItemFactory框架決定是否將文件寫入到磁盤或保存在內存之前設置大小閾值。如果保存在內存中,框架會將數據複製到DataOutputStream(這是透明地完成的,所以您的servlet仍然可以使用File對象而不必知道該文件是在磁盤上還是在內存中)。
也許在播放框架中有類似的配置。
不熟悉Play!特別是 - 是否有一個原因,你不能上傳文件到blobstore,然後閱讀blob? – 2011-06-14 23:12:21
我不需要存儲文件本身,我需要從中讀取數據,然後存儲該數據。 – 2011-06-16 13:50:45