1. ホーム
  2. php

[解決済み] URLからサーバーにファイルをダウンロードする

2022-03-15 12:31:18

質問

さて、これは非常に簡単そうに見えますが、そうなんです。サーバーにファイルをダウンロードするために必要なことは、以下の通りです。

file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));

ただ、一つ問題があります。100MBのような大きなファイルを持っている場合はどうすればいいのか。そうすると、メモリが足りなくなり、ファイルをダウンロードできなくなります。

私が欲しいのは、ダウンロード中にファイルをディスクに書き込む方法です。そうすれば、メモリの問題に直面することなく、より大きなファイルをダウンロードすることができます。

どのように解決するのですか?

PHP 5.1.0から。 file_put_contents() としてストリームハンドルを渡すことで、ピース単位の書き込みをサポートしています。 $data パラメータで指定します。

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

マニュアルより

もし データ [がストリームリソースである場合、そのストリームの残りのバッファを指定されたファイルにコピーします。これは stream_copy_to_stream() .

(感謝 ハクレ .)