2

csv フィードをパブリック ftp にアップロードしたいと考えています。

私はこれを持っています:

global $_CONFIG;
$host           = $_CONFIG['po']['ftp']['server'];
$username       = $_CONFIG['po']['ftp']['username'];
$password       = $_CONFIG['po']['ftp']['password'];
$ftp_path       = $_CONFIG['po']['ftp']['upload_path'];

$file = $export_file;
$fp = fopen($export_file, 'r+');

// set up basic connection
$conn_id = ftp_connect($host);

// login with username and password
$login_result = ftp_login($conn_id, $username, $password);

// try to upload $file
if (ftp_fput($conn_id, $ftp_path, $fp, FTP_BINARY)) {
    echo "Successfully uploaded $file\n";
    exit;
} else {
    echo "There was a problem while uploading $file\n";
    exit;
}
// close the connection and the file handler
fclose($fp);

ftp_close($conn_id);

ホスト、ユーザー、パスワードは正しいです。エクスポートファイルはD:/some path .csv

問題は、ftp サーバー上のファイルが呼び出されることです.upload.somefile.csv(フルサイズではありません)。

ftp_path は/somefile.csv.

私は何を間違っていますか?

4

2 に答える 2

1

これは、FTP の動作方法がネットワーク レイアウトと競合しているために発生する可能性があります。

FTP サーバーに接続してセッションを制御しますが、デフォルトでは、サーバーは転送用に別のデータ接続を使用してユーザーに「コールバック」します。ファイアウォール、NAT などはすべて、特定の状況下でこのプロセスを妨害する可能性があります。

データ接続の方向を逆にする を使用して、FTP のPASVモードを使用してみてください。ftp_pasv

于 2013-03-07T09:59:32.290 に答える
0

csvファイルはFTP_ASCIIではなくを使用する必要がありますFTP_BINARY

そう:

  global $_CONFIG;
    $host           = $_CONFIG['po']['ftp']['server'];
    $username       = $_CONFIG['po']['ftp']['username'];
    $password       = $_CONFIG['po']['ftp']['password'];
    $ftp_path       = $_CONFIG['po']['ftp']['upload_path'];

        $file = $export_file;
        $fp = fopen($export_file, 'r+');

        // set up basic connection
        $conn_id = ftp_connect($host);

        // login with username and password
        $login_result = ftp_login($conn_id, $username, $password);

        // try to upload $file
        if (ftp_fput($conn_id, $ftp_path, $fp, FTP_ASCII)) {
            echo "Successfully uploaded $file\n";
            exit;
        } else {
            echo "There was a problem while uploading $file\n";
            exit;
        }
        // close the connection and the file handler
        fclose($fp);

        ftp_close($conn_id);
于 2013-03-07T09:52:52.237 に答える