[PHP] CURLファイルのアップロード

I.説明

  このレビューは、一般的なCURLファイルアップロード操作、ベースTP5フレームを議論します。

  

第二に、フロントエンド

  以下のコード、(ここでは受信修正パラメータ名に対応するアップロードアドレスを入力する必要がありますファイル):

 < フォーム   アクション= "上传地址"   方式= "ポスト" のenctype = "マルチパート/フォームデータ" > 
        < 入力タイプ= "ファイル" = "ファイル" >  
        < ボタンタイプ= "提出" >上传</ ボタン> 
    < / フォーム>

 

 

第三に、バックエンド

  以下は、CURLによって別のサーバにアップロードし、アップロードプロセスTP5、に基づいています。

1 <?PHP
 2  名前空間のアプリ\コントローラ。
3  
4  使用は、\コントローラを考えます。
5  
6  // 文件上传类
7  クラスアップロード延びコントローラ
 8  {
 9が     保護 $ FILE_SIZEを = 20971520。// 20M 
10      保護 $ FILE_TYPE = [ "PNG"、 "JPG"、 "JPEG"、 "GIF"を]。
11      保護 の$ RET = [ 'コード' => 0、 'MSG' => ''、 'データ' => []]。
12      プライベート $ uploadUrl = "http://xxx.com"。
13は 
14      パブリック 関数)のdoIt(
 15      {
 16          のtry {
 17              $確認 = $ファイル - >検証([=> 'サイズ' $この - > FILE_SIZE、 'EXT' => $この - > FILE_TYPE]);
 18は、             IF( !$を確認します){
 19。                 スロー 新しい新 \ 例外( 'アップロードファイルサイズが20M、または不正なファイルの種類を超えた' );
 20がある             }
 21で 
22で             $のEXT = パス情報$ファイル - > GETINFO( '名前'))[「拡張" ];
 23は、             $(TM)= 時間()。
24              $パントマイム = $ファイル - > GETINFO( 'タイプ' );
25  
26              // 表单请求参数
27              $ POSTDATA = [
 28                  'ファイル' => 新しい \ CURLFile(のrealpath$ファイル - > getPathname())、$パントマイム$ fileNameに "{。。$のEXT }")、
 29              ] ;
30  
31              $ curlRes = $この - > curlUploadFile($この - > uploadUrl、$ POSTDATA )。
32の             $の解像度$のres [ 'MSG']、500 );
40 
                                                                                               }
 41である          } キャッチ(\ 例外 $ EX ){
 42は、             // 例外ハンドラ
43は             $この - > RETの[ 'コード'] = 500 ;
 44である             $この - > RET [ 'MSG'] = $ EX - > のgetMessage()。
 45          }
 46は、         リターン JSON($この - > RET); //はJSONを返す
47      }
 48 
50  
51である     // CURLファイルのアップロード
52が     プライベート 関数 curlUploadFile($のURL$データ53です     {
54          $カール = curl_init();
55          であればでclass_exists( '\のCURLFile' )){
 56              ますcurl_setopt($カール、CURLOPT_SAFE_UPLOAD、)。
57              // $データ=配列( 'ファイル' =>新しい\ CURLFile(のrealpath($パス))); //> = 5.5 
58          } {
 59              であれば定義された 'CURLOPT_SAFE_UPLOAD'( )){
 60                  ますcurl_setopt($カール、CURLOPT_SAFE_UPLOAD、);
61              }
 62              //$データ=配列( 'ファイル' => '@'のrealpath($パス)。); // <= 5.5 
63          }
 64          ますcurl_setopt($カール、CURLOPT_URL、$のURL );
65          ますcurl_setopt($カール、CURLOPT_POST、1 );
66          ますcurl_setopt($カール、CURLOPT_POSTFIELDS、$データ);
67          ますcurl_setopt($カール、CURLOPT_RETURNTRANSFER、1 );
68          $結果 = curl_exec($カール);
69          $エラー = curl_error($カール);
70  
71          curl_close($カール);
72  
73          戻り ます$ result ;
74      }
 75 }

 

おすすめ

転載: www.cnblogs.com/reader/p/11444608.html