php 之跨域上傳圖片

來源:互聯網
上載者:User

標籤:跨域問題   function   track   static   圖片路徑   blog   pos   new   date   

因為要將所有上傳的圖片上傳到一台獨立的圖片伺服器上面,js上傳時存在跨域問題,網上找到這種,通過php curl方式,將圖片重新發送到另外一台伺服器上儲存,並返回圖片路徑!


這種方式存在一定問題:
1,上傳大圖片時,比如2M,需要將圖片首先傳到伺服器,然後再傳到圖片伺服器,中間需要4M的傳輸,加大了上傳時間!
2,從伺服器轉到圖片伺服器的時候因為沒有儲存,傳輸使用的是臨時檔案,考慮到圖片格式的限制,將圖片進行了重新命名,傳輸之後對該圖片進行刪除,碰到一些未知問題是可能導致圖片刪除失敗,增加了伺服器儲存空間!


代碼如下:

 

[html] view plain copy 
  1. public function upload($files = ‘‘){  
  2.     if($files === ‘‘){  
  3.         $files  =   $_FILES;  
  4.     }  
  5.   
  6.     if(empty($files)){  
  7.         $this->error = ‘沒有上傳的檔案!‘;  
  8.         return false;  
  9.     }  
  10.   
  11.     $ext = pathinfo(strip_tags($files[‘file‘][‘name‘]), PATHINFO_EXTENSION);  
  12.   
  13.     $new_name = dirname($files[‘file‘][‘tmp_name‘]).‘/‘.date("YmdHis").rand(0,99).".".$ext;  
  14.   
  15.     rename($files[‘file‘][‘tmp_name‘],$new_name);  
  16.   
  17.     $fields[‘img‘] = ‘@‘.$new_name;  
  18.   
  19.     //初始化curl          
  20.     $ch = curl_init();  
  21.   
  22.     curl_setopt($ch,CURLOPT_URL, $this->url);  
  23.   
  24.     curl_setopt($ch, CURLOPT_POST, 1 );  
  25.     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );  
  26.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  
  27.   
  28.     //運行curl  
  29.     $r = curl_exec($ch);  
  30.     curl_close($ch);  
  31.   
  32.     @unlink($new_name);  
  33.   
  34.     if($r){  
  35.         return json_decode($r,true);  
  36.     }else{  
  37.         $this->error = "請求失敗";  
  38.         return false;  
  39.     }  
  40. }  
 

php 之跨域上傳圖片

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.