標籤:跨域問題 function track static 圖片路徑 blog pos new date
因為要將所有上傳的圖片上傳到一台獨立的圖片伺服器上面,js上傳時存在跨域問題,網上找到這種,通過php curl方式,將圖片重新發送到另外一台伺服器上儲存,並返回圖片路徑!
這種方式存在一定問題:
1,上傳大圖片時,比如2M,需要將圖片首先傳到伺服器,然後再傳到圖片伺服器,中間需要4M的傳輸,加大了上傳時間!
2,從伺服器轉到圖片伺服器的時候因為沒有儲存,傳輸使用的是臨時檔案,考慮到圖片格式的限制,將圖片進行了重新命名,傳輸之後對該圖片進行刪除,碰到一些未知問題是可能導致圖片刪除失敗,增加了伺服器儲存空間!
代碼如下:
[html] view plain copy
- public function upload($files = ‘‘){
- if($files === ‘‘){
- $files = $_FILES;
- }
-
- if(empty($files)){
- $this->error = ‘沒有上傳的檔案!‘;
- return false;
- }
-
- $ext = pathinfo(strip_tags($files[‘file‘][‘name‘]), PATHINFO_EXTENSION);
-
- $new_name = dirname($files[‘file‘][‘tmp_name‘]).‘/‘.date("YmdHis").rand(0,99).".".$ext;
-
- rename($files[‘file‘][‘tmp_name‘],$new_name);
-
- $fields[‘img‘] = ‘@‘.$new_name;
-
- //初始化curl
- $ch = curl_init();
-
- curl_setopt($ch,CURLOPT_URL, $this->url);
-
- curl_setopt($ch, CURLOPT_POST, 1 );
- curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
-
- //運行curl
- $r = curl_exec($ch);
- curl_close($ch);
-
- @unlink($new_name);
-
- if($r){
- return json_decode($r,true);
- }else{
- $this->error = "請求失敗";
- return false;
- }
- }
php 之跨域上傳圖片