如何在Action
類的方法中讀取上傳文件的內容?我能夠在服務器上上傳文件,但不知道如何閱讀該文件的內容。在Struts2中讀取上傳文件的內容
我們必須先將它保存在服務器上嗎?或者我們可以直接閱讀嗎?
如何在Action
類的方法中讀取上傳文件的內容?我能夠在服務器上上傳文件,但不知道如何閱讀該文件的內容。在Struts2中讀取上傳文件的內容
我們必須先將它保存在服務器上嗎?或者我們可以直接閱讀嗎?
選項1:創建一個servlet
我建議你使用Apache的百科全書file upload。此鏈接提供了有關如何使用FileItem來處理上載文件(將其寫入磁盤或在文件大小足夠小的情況下在內存中讀取它)的示例。另一個相關的例子可以找到here。
選項2:使用Struts標籤s:file
正如@BalusC下面支柱的評論中提到有一個內置的使用s:file標籤庫和使用它的教程文件上傳過程提供here。基本上文件被上傳到一個臨時目錄。但是,您可以通過爲default.properties
文件中的struts.multipart.saveDir
屬性設置值來覆蓋該值。此鏈接還提到使用Apache FileUtils來處理上傳的文件,順便說一句,這是任何文件I/O工作的非常方便的庫。
我不做Struts2,但我想象一下,有一點MVC框架內置了這個設施,當然如果它是Apache框架的話。我在mkyong.com上偷看了一下,發現這個:http://www.mkyong.com/struts2/struts-2-file-upload-example/引入Apache Commons FileUpload有點矯枉過正。 – BalusC 2011-06-14 22:40:38
@BalusC感謝 - 這是使用':file'標籤和apache'FileUtils'類的文件上傳過程的良好鏈接。雖然鏈接沒有明確解釋如何處理文件,但我認爲這部分應該是微不足道的。你介意把它作爲答案嗎?我可以刪除我的帖子,因爲看起來OP應該使用struts提供的文件上傳程序。 – CoolBeans 2011-06-14 22:47:26
我不完全確定這是否有幫助,我不是一個包含鏈接的答案的粉絲:) – BalusC 2011-06-14 22:52:21
http://java.dzone.com/articles/struts2-tutorial-part-67在這裏,他解釋瞭如何做一個非常明確和詳細的上傳
下面是提供Struts2的標準方法,用一個例子:
http://struts.apache.org/2.0.14/docs/file-upload.html
這是很簡單和優雅(無需混淆servletRequest.getRealPath("/")
作爲其他示例鏈接hoss)。
通過使用<s:file>
標記(以及合適的攔截器),Struts2將完成所有髒操作併爲您提供(臨時)上傳文件,作爲操作中的File
字段;你可以打開它或移動,或者其他任何文件。
你說你可以上傳文件到服務器......這是否意味着文件已經在服務器上?你的意思是你提供了一個允許用戶上傳內容的操作,或者你已經放置了一個文件並想讀取它的服務器上有一個文件夾? – Quaternion 2011-06-15 05:14:47