zoukankan      html  css  js  c++  java
  • php 之跨域上传图片

    因为要将所有上传的图片上传到一台独立的图片服务器上面,js上传时存在跨域问题,网上找到这种,通过php curl方式,将图片重新发送到另外一台服务器上保存,并返回图片路径!


    这种方式存在一定问题:
    1,上传大图片时,比如2M,需要将图片首先传到服务器,然后再传到图片服务器,中间需要4M的传输,加大了上传时间!
    2,从服务器转到图片服务器的时候因为没有保存,传输使用的是临时文件,考虑到图片格式的限制,将图片进行了重命名,传输之后对该图片进行删除,碰到一些未知问题是可能导致图片删除失败,增加了服务器存储空间!


    代码如下:

    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    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. }  
     
  • 相关阅读:
    spring揭秘 读书笔记 六 bean的一生
    分枝限界算法
    libLAS1.8.0 编译和配置(VS2013+Win7 64)(一)
    Unity学习笔记 之 发射小球碰撞物体的代码记录
    hdu1281 棋盘游戏 --- 最大匹配
    javascript设计模式
    3、Android中Activity的跳转
    2.11 确定运行计划
    php扩展之 pdo_mysql.so
    POJ 1061 青蛙的约会(扩展欧几里得)
  • 原文地址:https://www.cnblogs.com/yzryc/p/6229572.html
Copyright © 2011-2022 走看看