2011-09-20 33 views
2

我試圖存儲ByteArrayInputStream的文件一個FTP服務器上。我已經可以連接到服務器並更改工作路徑,但觸發將文件流存儲在服務器上的方法始終返回false爪哇 - FTP服務器上存儲文件失敗

我使用的是Apache FTPClient。

有人可以給我一個提示,我的錯誤可以!!

這裏的代碼:

String filename = "xyz.xml" 

    // connection returns true 
    connectToFtpServer(ftpHost, ftpUser, ftpPassword, exportDirectory); 

    // byteArray is not void 
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray); 

    try { 
     // change returns true 
     result = ftpClient.changeWorkingDirectory(exportDirectory); 

     // storing the file returns false 
     result = ftpClient.storeFile(filename, byteArrayInputStream); 

     byteArrayInputStream.close(); 
     ftpClient.logout(); 
    } catch (...) { 
     ... 
    } finally { 
     // disconnect returns true 
     disconnectFromFtpServer(); 
    } 
+6

如果使用相同的用戶名和密碼手動連接到同一臺服務器,是否可以按該名稱在該目錄中存儲文件? –

+1

啊!我可以手動連接,但不能存儲文件。謝謝!這是一個許可問題。 –

+0

我想你使用的是Apache FTPClient,但是你應該在你的問題中這麼說。你有權訪問FTP服務器日誌嗎?你已經勾畫出你的異常處理。 storeFile()是否肯定不會引發異常? – slim

回答

0

它實際上是一個權限問題是由於一個無效的用戶組。在將用戶添加到用戶組後,我能夠再次存儲文件。

0

我不相信這是你的代碼。下面是另一個與kodejava非常相似的示例: package org.kodejava.example.commons.net;

import org.apache.commons.net.ftp.FTPClient; 
import java.io.FileInputStream; 
import java.io.IOException; 

public class FileUploadDemo { 
public static void main(String[] args) { 
    FTPClient client = new FTPClient(); 
    FileInputStream fis = null; 

    try { 
     client.connect("ftp.domain.com"); 
     client.login("admin", "secret"); 

     // 
     // Create an InputStream of the file to be uploaded 
     // 
     String filename = "Touch.dat"; 
     fis = new FileInputStream(filename); 

     // 
     // Store file to server 
     // 
     client.storeFile(filename, fis); 
     client.logout(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (fis != null) { 
       fis.close(); 
      } 
      client.disconnect(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
} 

我同意這是文件權限。沒有辦法改變java本身的權限,但還有其他解決方案。看到這個線程:How do i programmatically change file permissions?

HTH,

詹姆斯