ホームページ >バックエンド開発 >PHPチュートリアル >PHPはCURL経由でファイルをアップロードします

PHPはCURL経由でファイルをアップロードします

PHP中文网
PHP中文网オリジナル
2017-02-10 14:20:342362ブラウズ

p> PHP で CURL を使用してファイルをアップロードするには、リクエスト内のフィールドに「@」で始まるアップロードするファイルのフルパスを設定し、CURL を使用して送信するだけです。 POST モードの変数をサーバーに送信すると、サーバー側のスーパー グローバル変数 $_FILES から、対応するアップロード ファイル情報を取得できます。

<br>

以下では、例を使用してこのプロセスを示します。

<br>

ローカルにテキスト ファイル log.txt があり、そのパスは "/www/test/log.txt" で、内容は次のとおりであるとします。

this is a file for test
hello PythonTab!

このファイルをサーバーにアップロードするには、-サイドスクリプト http://www.pythontab.com/upload.php で、curl_file.php という名前のローカル スクリプトを作成しました。内容は次のとおりです:

<php?
//要上传的本地文件地址
"upload" = > "@/www/test/log.txt"
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
 ?>

curl_file.php のロジックは非常に単純で、POST 変数 $ を設定します。 post_data、upload は送信する必要があるファイルを指します。ここで注意していただきたいのは、以前に POST を使用したときは、文字列を送信し、サーバー側で file_get_contents("php//input") を使用して文字列を取得していたことです。キーと値のペアを送信することもできます。サーバー側にはスーパーグローバル変数$_POSTがあり、$_GETと同様に該当するPOSTデータの値を取得できます。ファイルをアップロードするための変数は $_POST には存在せず、$_FILES に存在することに注意してください。

<br>

上記のコードからファイルアップロードリクエストを受信するサーバーのロジックを示すために、upload.php に次のコードを書きました:

<br>

upload.php は最初に var_export を使用して $_FILES 変数を出力します標準出力を取得し、file_get_contents を使用して $_FILES['upload']['tmp_name'] が指すファイルの内容を読み取り、標準出力に出力し、$_FILES[' が指すファイルをコピーします。 ']['tmp_name'] を現在のディレクトリにアップロードします。スクリプトの標準出力は次のとおりです。

array(
 &#39;upload&#39; =>
     array(
     &#39;name&#39; => &#39;log.txt&#39;,
     &#39;type&#39; => &#39;application/octet-stream&#39;,
     &#39;tmp_name&#39; => &#39;/tmp/phpLUB59F&#39;,
     &#39;error&#39; => 0,
     &#39;size&#39; => 36,
     )
 )
 this is a file for test
 hello PythonTab!

$_FILES 変数にアップロード配列があることがわかります。これは、アップロードされたファイルの説明情報に対応します。ここで、name と type は、それぞれ名前とタイプを表します。 tmp_name は、アップロードされたファイルを受信した後、そのファイルを一時ファイルに書き込むため、log.txt のファイルの内容を取得できます。ファイルを読んでいます。通常、サーバーは、アップロードされたファイルを受信した後、すぐにファイルを読み取るか、ファイルを別のファイルにコピーする必要があります。これは、tmp_name が指す一時ファイルは、サーバー スクリプトの最後の Upload.php スクリプトの実行後に削除されるためです。行は、一時ファイルをターゲットファイルにコピーすることです。

<br>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。