2012-03-01 113 views
2

我的機器本地有幾個excel文件。我想把這個excel文件上傳到ftp。我使用Apache Commons FTPClinet。但是當它上傳文件時,它會被破壞並且大小爲零。這裏是示例程序apache commons ftp客戶端文件上傳問題

任何人都可以指出我在哪裏做錯了嗎?

public class App { 
    private static final String server = "localhost"; 
    private static final String username = "test"; 
    private static final String password = "test"; 
    private static final String directory = "/home/files"; 

    public static void main(String[] args) throws SocketException, IOException { 
     FTPClient f = new FTPClient(); 
     f.connect(server); 
     f.login(username, password); 
     f.setFileType(FTPClient.BINARY_FILE_TYPE); 
     InputStream is = null; 

     is = new FileInputStream("c:\\tmp\\output.xls"); 
     Boolean isStored = f.storeFile("status.xls", is); 
     is.close(); 
    } 
} 
+0

我沒有收到任何錯誤消息,唯一的問題是文件被破壞,而不是數據被寫入 – user509755 2012-03-01 20:28:03

+0

你可以發佈你的錯誤嗎? – alexvetter 2012-03-01 20:54:42

+0

您確定'/ home/files/status.txt'在FTP服務器目錄結構的上下文中有效嗎?這看起來像是在服務器的文件存根下可能無效的絕對路徑。 – 2012-03-01 20:59:46

回答

0

請勿使用f.setFileType(FTPClient.BINARY_FILE_TYPE);刪除該行。

Excel文件不是二進制的,它們應該以ascii的形式傳輸,這是apache commons FTPClient的默認設置。

我沒有測試過這個。試一試。

而且變化是從InputStreamFileInputStream

+0

沒有成功,我的朋友。這次我沒有看到不可讀的內容,但我仍然可以在複製的文件中看到完整的數據。 – user509755 2012-03-01 23:25:37

+0

只是確保在你的代碼中,服務器名稱不是localhost,對不對? – roymustang86 2012-03-02 13:56:04

+0

如果你正試圖將它上傳到linux服務器,請確保該文件夾具有足夠的權限(777) – roymustang86 2012-03-02 14:20:02