php curlを使ってブラウザのフォームをシミュレーションしてファイルまたは画像をアップロードする方法


前言
ブラウザで使用しているhtmlのinputボックスはファイルのアップロードを実現できます。フォーム要素は <body> <form action="UploadFile.php" method="post" enctype="multipart/form-data"> <input type="file" name="fileUpload" /> <input type="submit" value=" " /> </form> </body> いつもいくつかの時、私達はバックグランドで直接ファイルをアップロードします。ブラウザでフロントエンドでアップロードするのではなくて、この時phpのcurlはいくつかのパラメータを提供しました。直接にphpバックグラウンドでファイルをアップロードすることができます。
php curlシミュレーションを使ってファイルをアップロードします。
curlがファイルをアップロードする時、最も重要なのは「@」符号の応用であり、@マークのcurlを加えるとファイルアップロード処理と見なされます。
具体的なコードの例:

<?php
  header('Content-type:text/html; charset=utf-8'); //    
  $ch = curl_init();
  $url = 'https://xxx.com/api/mobile/auto_upload.php?uid=9705459';
  
  //post  ,  @  ,curl          
  $curlPost = array('Filedata'=>'@/Users/finup/Documents/11.png');
  
  
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POST, 1); //POST  
  curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);
  $data =curl_exec($ch);
  curl_close($ch);
  echo '<pre>';
  var_dump($data);
上記のコード例のurlはファイルアップロードを処理するための具体的なインターフェースであり、直接$uを使用することができます。FILESはアップロードされた一時ファイルに関する情報を取得して$uを印刷します。FILESは、配列のキー「Filedata」名をパラメータを渡す時に自分で指定することができます。

Array
(
[Filedata] => Array
(
[name] => 11.png
[type] => application/octet-stream
[tmp_name] => /private/var/tmp/php936cex
[error] => 0
[size] => 36663
)
)
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。