簡體   English   中英

創建一個臨時文件,然后使用FTP(Java webapp)上傳

[英]Create a temporary file, then upload it using FTP (Java webapp)

我的Web應用程序的用戶可以選擇啟動一個過程,該過程生成CSV文件(由數據庫中的某些數據填充)並將其上傳到FTP服務器(其他部門將從那里讀取文件)。 我只是想弄清楚如何最好地實現這一點。 我使用commons net ftp功能。 它提供了兩種將數據上傳到FTP服務器的方式:

  • storeFile(String remote,InputStream local)
  • storeFileStream(字符串遠程)

生成所有CSV數據可能需要一段時間,因此我認為始終保持連接處於打開狀態(storeFileStream)並不是最好的方法。 這就是為什么我要生成一個臨時文件,然后填充它,然后才傳輸它。

在Webapp中生成臨時文件的最佳方法是什么? 建議使用File.createTempFile安全嗎?

只要您不同時創建數千個CSV文件,就我而言,上傳時間並不重要。 數據庫通常會逐行輸出數據,如果已經是CSV文件所需的格式,則我強烈建議完全不要使用臨時文件-只需即時進行轉換:

創建一個InputStream實現,該實現逐行讀取數據庫數據,將其轉換為CSV並通過其read()方法發布數據。

順便說一句:您提到轉換是由Web應用程序完成的,並且可能要花很長時間-這可能是有問題的,因為默認的Web客戶端超時。 因此,最好由僅由webapp界面觸發的后台線程來完成持久的過程。

可以使用createTempFile,新的File(tmpDir,UUID.randomUUID()。toString())也可以使用。 只是不要使用deleteOnExit() ,它是一個泄漏管理器。 確保自行刪除文件。

編輯:由於您將數據存儲在內存中,因此請勿將其存儲在任何地方; 包裝一個java.io.ByteArrayInputSteam並使用帶有InputStream的方法。 更整潔和更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM