2016-10-06 123 views
0

我是新來的這種工作,所以請幫助我。 我發送一個xlsx文件(一個excel文件)到服務器,我的代碼沒有錯誤,並且在ftp服務器中,我在xampp中使用了filezilla。我在谷歌搜索,並說它必須存儲在一個zip文件,但zip文件也損壞。 這是我的代碼java ftp傳輸文件導致文件損壞

FTPClient upload= new FTPClient(); 
    File firstLocalFile = new File("C:/Users/user/desktop/sample.xlsx"); 
    InputStream inputStream = new FileInputStream(firstLocalFile); 
    try { 

     upload.connect("localhost"); 
     upload.login("user", "pass"); 
     upload.enterLocalPassiveMode(); 
     upload.storeFile("sample.zip", inputStream); 
    } finally { 
     try { 
      upload.logout(); 
      upload.disconnect(); 
     } catch (Exception e) { 
     } 
    } 

我的問題的任何解決方案?

+0

您可以加入'upload.setFileType(FTP.BINARY_FILE_TYPE);存儲之前',並檢查結果? – Berger

+0

woah它解決了我的問題,謝謝:D –

回答

3

您需要設置使用的文件類型 -

upload.setFileType(FTPClient.BINARY_FILE_TYPE); 

此外,添加try和catch周圍upload.storeFile,以確保其存儲文件。

+0

感謝您的幫助:D –

+0

我還有一個問題,ftp有傳輸文件大小的限制嗎? –

+0

@FrancisGabrielRodriguez沒有大小限制。其特定應用程序。我已下載/上傳4-5 GB的數據。另外,請接受的情況下,它的幫助:) – Techidiot

0

請嘗試以下

public void fetchFile() throws Exception { 
    final FTPClient ftpClient = new FTPClient(); 
    try { 
     ftpClient.connect(this.serverDetails.getHostName(), this.serverDetails.getPort()); 
     if (!ftpClient.login(this.serverDetails.getUserName(), this.serverDetails.getPassword())) { 
      throw new IOException("cannot login to server (server reply: " + ftpClient.getReplyCode()); 
     } 
     if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { 
      throw new IOException("Exception in connecting to FTP Server"); 
     } 
     final FTPFile ftpFile = ftpClient.mlistFile(this.serverDetails.getPath()); 
     if (ftpFile.isFile()) { 
      final InputStream is = ftpClient.retrieveFileStream(this.serverDetails.getPath()); 
      ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
      ftpClient.enterLocalPassiveMode(); 
      copyFromRemote(is, ftpFile.getSize()); 
     } else { 
      throw new IOException("Remote file Doesnot Exist"); 
     } 

    } catch (final Exception e) { 
     throw e; 
    } 

    finally { 
     ftpClient.logout(); 
     ftpClient.disconnect(); 
    } 
}