この記事では、主に PHP の CURL を介してファイルをアップロードする機能を紹介し、関連する属性設定と、curl ファイルのアップロード操作を使用した PHP の使用スキルを例の形式で分析します。この記事では、PHP ファイル関数の CURL を介したアップロードの実装について説明しています。参考までに皆さんと共有してください。詳細は次のとおりです:
PHP は CURL を使用してファイルをアップロードします。POST リクエストを送信し、リクエスト内の特定のフィールドをアップロードする必要のあるファイルのフルパスに設定するだけです。 "@" で始まり、CURL を使用してこの変数を POST モードでサーバーに送信すると、対応するアップロード ファイル情報がサーバー側のスーパー グローバル変数 $_FILES から取得できます。
以下に例を示してこのプロセスを示します。
ローカルにテキスト ファイル log.txt があり、そのパスは「/www/test/log.txt」で、内容は次のとおりであるとします。
this is a file for test hello PythonTab!
このファイルをサーバーにアップロードするには-サイド スクリプト http://www .php.cn/article.html では、次の内容を含む、curl_file.php という名前のローカル スクリプトを作成しました:
<?php $url = "http://www.php.cn/article.html"; $post_data = array( "foo" => "bar", //要上传的本地文件地址 "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 を使用したときは、文字列を送信し、サーバー側で <code>file_get_contents("php//input")
を使用して文字列を取得していたことに注意してください。実際、POST は GET と同様にキーと値のペアを送信することもできます。サーバー側にはスーパーグローバル変数$_POSTがあり、$_GETと同様に対応するPOSTデータの値を取得できます。ファイルをアップロードするための変数は $_POST には存在せず、$_FILES に存在することに注意してください。
上記のコードからファイルアップロードリクエストを受信するサーバーのロジックを示すために、upload.php に次のコードを書きました: $post_data
,其中upload指向需要发送的文件。这里要注意,我们之前使用POST都是发送一个字符串,然后在服务器端使用file_get_contents("php//input")
来获取该字符串,和这里的用法不一样,其实POST也可以像GET一样,发送键值对。在服务端有一个超级全局变量$_POST可以像$_GET一样,获取相应的POST数据的值。需要注意的是,上传文件的变量不是存在着$_POST中,而是在$_FILES中。
为了展示服务端收到上述代码的文件上传请求的逻辑,我们在upload.php中写了以下代码:
<?php echo var_export($_FILES,true); echo file_get_contents($_FILES['upload']['tmp_name']); copy($_FILES['upload']['tmp_name'], "./log_copy.txt"); ?>
upload.php首先使用var_export
将$_FILES
变量输出到标准输出,然后使用file_get_contents
读取$_FILES['upload']['tmp_name']
所指文件的内容,并输出到标准输出,然后把$_FILES['upload']['tmp_name']
array( 'upload' => array( 'name' => 'log.txt', 'type' => 'application/octet-stream', 'tmp_name' => '/tmp/phpLUB59F', 'error' => 0, 'size' => 36, ) ) this is a file for test hello PythonTab!
upload.php は最初に var_export
を使用します。 > to $_FILES 変数は標準出力に出力し、次に file_get_contents
を使用して $_FILES['upload'][ が指すファイルの内容を読み取ります。 'tmp_name']
を標準出力に出力し、 $_FILES['upload']['tmp_name']
が指すファイルを log_copy.txt ファイルにコピーします。現在のディレクトリにあります。スクリプトの標準出力は次のとおりです。
$_FILES 変数にアップロード配列があることがわかります。これは、アップロードされたファイルの説明情報に対応します。ここで、name と type は、それぞれ名前とタイプを表します。 tmp_name は、アップロードされたファイルを受信した後、そのファイルを一時ファイルに書き込むため、log.txt のファイルの内容を取得できます。ファイルを読んでいます。通常、サーバーは、アップロードされたファイルを受信した後、すぐにファイルを読み取るか、ファイルを別のファイルにコピーする必要があります。これは、tmp_name が指す一時ファイルは、サーバー スクリプトの最後の Upload.php スクリプトの実行後に削除されるためです。行は、一時ファイルをターゲットファイルにコピーすることです。 関連する推奨事項:
php は、soap を介して .Net の WebService asmx ファイルを呼び出すメソッドを実装します
PHP は、strace を介して障害の原因を特定するメソッドを実装します
🎜🎜🎜🎜 🎜
以上がPHPはCURLを介してファイルをアップロードする機能を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。