0

ローカル サーバーから ftp サーバーにファイルを保存しようとしています。

ソースファイルは現在のディレクトリにあります(phpファイルと同じ)

でスクリプトを実行しますhttp://www.server.co.za/kisv2/xmltest/export.php

ftpにアップロードするファイルはhttp://www.server.co.za/kisv2/xmltest/exportfile.csv

宛先の ftp パスは次のとおりです。ftp://ftp.ftpserver.co.za/LocExports/exportfile.csv

私のftpログインのデフォルトは次のとおりです。ftp://ftp.ftpserver.co.za

exportfile.csvだから私は現在のディレクトリからファイルをコピーしたいftp://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 サーバーに表示されますが、空白でサイズが 0 バイトです。

どんなアイデアでも大歓迎です。

感謝と敬意

アップデート

$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 で作成されますが、空です。

再度、感謝します

4

2 に答える 2

0

私は同じ問題を抱えていました。ファイルは作成されましたが、サイズは 0 KB です。モードをパッシブに設定した後、ファイルが FTP サーバーに正常に転送されました。実際、FTP サーバーにファイルをアップロードする際に注意しなければならないことが 3 つあります。

  1. ファイルの種類を BINARY に設定します。objFtpClient.setFileType(FTP.BINARY_FILE_TYPE);

  2. ファイル転送モードをバイナリに設定:objFtpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);

  3. モードをパッシブに設定します(内部で何をしているのかわかりませんが、動作します...!):objFtpClient.enterLocalPassiveMode();

于 2013-10-14T13:09:48.473 に答える