簡體   English   中英

將csv fie上傳到ftp服務器-文件為空

[英]uploading csv fie to ftp server - file empty

我正在嘗試將本地服務器上的文件存儲在ftp服務器上。

源文件在我當前的目錄中(與php文件相同)

我使用http://www.server.co.za/kisv2/xmltest/export.php運行腳本

要上傳到ftp的文件是http://www.server.co.za/kisv2/xmltest/exportfile.csv

目標ftp路徑為:ftp: ftp://ftp.ftpserver.co.za/LocExports/exportfile.csv

我的ftp登錄默認為:ftp: ftp://ftp.ftpserver.co.za

所以我想將文件從當前目錄exportfile.csvftp://ftp.ftpserver.co.za/LocExports/exportfile.csv

我當前的語法是:

$source = 'exportfile.csv';  //this is a file in the same directory as my php file. full path is... http://www.server.co.za/kisv2/xmltest/exportfile.csv
$target = '/LocExports/exportfile.csv'; //full path is... ftp://ftp.ftpserver.co.za/LocExports/exportfile.csv

$conn = ftp_connect("ftp.ftpserver.co.za") or die("Could not connect");
ftp_login($conn, "username", "password");

$upload = ftp_put($conn, $target, $source, FTP_ASCII);
if (!$upload) { echo 'FTP upload failed!'; }

echo "complete";

這給了我錯誤Warning: ftp_put() [function.ftp-put]: Opening ASCII mode data connection 該文件確實出現在FTP服務器上,但為空白,大小為0bytes。

任何想法歡迎。

謝謝並恭祝安康

UPDATE

$source = 'exportfile.csv';  
$target = '/LocExports/exportfile.csv'; 

$conn = ftp_connect("ftp.server.co.za") or die("Could not connect");
ftp_login($conn, "username", "password");

ftp_pasv($conn, true); 

$upload = ftp_put($conn, $target, $source, FTP_BINARY);
if (!$upload) { echo 'FTP upload failed!'; }

echo "complete";

仍然失敗: Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection.

文件在ftp上創建,但為空。

再次感謝

添加ftp_pasv($conn, true); 在您的ftp_login(...)

來自http://www.php.net/manual/en/function.ftp-put.php

如果使用ftp_put時出現以下錯誤之一:

警告:ftp_put()[function.ftp-put]:打開ASCII模式數據連接

警告:ftp_put()[function.ftp-put]:打開BINARY模式數據連接

它將在正確的位置創建文件,但它是一個0kb的文件,此后所有FTP命令均失敗。 客戶端可能在防火牆后面。 要糾正這種用法:

ftp_pasv($conn, true);

在執行任何put命令之前。 花了我這么長時間才弄清楚這一點,當我這樣做時我真的很高興:D

我遇到了同樣的問題。 已創建文件,但大小為0 KB。 將模式設置為被動后,我的文件成功傳輸到FTP服務器。 實際上,在FTP服務器上上傳文件時,我們必須注意三件事。

  1. 將文件類型設置為BINARY: objFtpClient.setFileType(FTP.BINARY_FILE_TYPE);

  2. 將文件傳輸模式設置為BINARY: objFtpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);

  3. 將模式設置為被動(我不知道它在內部做什么。但是它可以工作...!): objFtpClient.enterLocalPassiveMode();

暫無
暫無

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

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