2012-01-04 224 views
1

我使用Apache的FTP客戶端上傳文件到FTP服務器。但問題是代碼沒有拋出異常,但上傳的文件是空的。這可能是什麼原因。 我上傳了兩次相同的文件,但名稱不同,如下所示。空文件上傳到FTP服務器

ftpClient.storeFile(fileDir+"//"+"actualFileName", inputStream)); 
    ftpClient.storeFile(fileDir+"//"+"differentFileName", inputStream)); 
+0

您沒有在文本模式下上傳二進制文件,是嗎? – dasblinkenlight 2012-01-04 04:46:41

+0

我有可供上傳的文件的InputStream,並且我已將文件類型設置爲FTPClient的二進制文件 – user968880 2012-01-04 06:38:24

+0

發佈您上傳文件的代碼,它可以幫助其他人識別邏輯中是否有任何錯誤。 – 2012-01-04 07:34:35

回答

0

我認爲這是第二個文件結束爲空。您應該重新創建第二次更新的inputStream(根據DRCB的評論),否則它將爲空(它將在第一次上載時用完)。

+0

是否有一些wat保存輸入流,因爲它不可能重新創建。 – user968880 2012-01-04 09:56:04

+0

您可以將InputStream複製到一個字節數組中(使用commons-io在一行中執行此操作),並使用ByteArrayInputStream作爲storeFile的源。 – artbristol 2012-01-04 11:30:06

0

一句話:「//」看起來有點奇怪,不應該是「/」嗎?

您重複storeFile與相同的inputStream,它將被讀到最後。 InputStream具有讀取位置。因此第二個文件肯定是空的。另外不要忘記close()輸入流不丟失文件句柄。