2

PHPでFTPアップロードをストリーミングすることは可能ですか?別のサーバーにアップロードする必要のあるファイルがあり、FTP経由でのみそのサーバーにアクセスできます。残念ながら、このサーバーのタイムアウト時間を増やすことはできません。これを行うことは可能ですか?

基本的に、ファイルの一部を書き込んでから、一度に全部をアップロードするのではなく、次の部分を追加する(そして繰り返す)方法があれば、それは私を救うでしょう。しかし、私のグーグルは私に答えを提供していません。

これは達成可能ですか?

4

2 に答える 2

1

OKじゃあ...これはあなたが探しているものかもしれません。あなたはカールに精通していますか?

CURLはFTPの追加をサポートできます。

curl_setopt($ ch、CURLOPT_FTPAPPEND、TRUE); //フラグを追加

もう1つのオプションは、ftp:// / ftps://ストリームを使用することです。これは、PHP5では追加が許可されているためです。ftp://を参照してください。ftps://ドキュメント。アクセスしやすいかもしれません。

于 2012-06-28T16:25:52.457 に答える
0

リモートファイルの最後にチャンクを追加する最も簡単な方法は、フラグを指定して使用file_put_contentsすることです。FILE_APPEND

file_put_contents('ftp://username:pa‌​ssword@hostname/path/to/file', $chunk, FILE_APPEND);

それが機能しない場合は、PHPでURLラッパーが有効になっていないことが原因である可能性があります。


書き込みをより細かく制御する必要がある場合(転送モード、パッシブモードなど)、またはを使用できない場合は、 (または)ストリームへのハンドルをfile_put_contents使用して:を使用します。ftp_fputphp://tempphp://memory

$conn_id = ftp_connect('hostname');

ftp_login($conn_id, 'username', 'password');
ftp_pasv($conn_id, true);

$h = fopen('php://temp', 'r+');
fwrite($h, $chunk);
rewind($h);

// prevent ftp_fput from seeking local "file" ($h)
ftp_set_option($conn_id, FTP_AUTOSEEK, false);

$remote_path = '/path/to/file';
$size = ftp_size($conn_id, $remote_path);
$r = ftp_fput($conn_id, $remote_path, $h, FTP_BINARY, $size);

fclose($h);
ftp_close($conn_id);

(エラー処理を追加)

于 2017-05-12T06:12:51.420 に答える