php+jquery 实现 ajax上传图片到非当前服务器

用 html file控件上传图片,由于 $_FILES["file"] 是传到当前服务器,想要上传到另一个服务器须要经过服务器脚本实现。html

1.图片上传jquery

引入jquery 和 ajaxfileupload  两个js文件ajax

                   

                                        
                  
<input type="button" value="上传icon图片" id="subimg">(146*146)
<input type="file" name="iconfile" id="icon" style="display:none">
<input type="hidden" name="icon" id="iconname" value="">


<script>
$("#subimg").click(function(){
     
    $("#icon").trigger('click'); 
 });
$("#icon").change(function(){
             $.ajaxFileUpload({
                 url:'http://***.**/upload',
                 fileElementId:'icon',   
                 dataType:'json',
                 success:function(data,status){
                    if(data.stat == 1){
                        $("#iconname").val(data.iconname);
                        alert(data.str);                        
                    }else{
                        alert(data.str);
                    }
                    
                 },
                 error:function(data,status,e){
                    alert('wrong!');
                    alert(e);
                 }
             });
        });
</script>

2.当前服务器接收图片,将图片保存到当前服务器上。json

public function upload()
    {
        $data = $_FILES['iconfile'];
        if(empty($data)){
            $result = array('stat'=>-1,str=>'请选择图片');
            echo json_encode($result);exit;
        }
        $file_name = $data['name'];     // 文件名
        $tmp_name = $data['tmp_name'];  // 服务器上临时文件名
        $file_size = $data['size'];     // 文件大小
        $file_type = $data['type'];     // 文件类型
        $arr = explode('.',$file_name);
        $type = $arr[1];
        $file_name = 'icon'.time().'.'.$type;
        $file_path = '/data/www/bi.feiliu.com/public/icon/'.$file_name;
        
         if(move_uploaded_file($tmp_name, $file_path) == true ){
             $result = array('stat'=>'1','str'=>'添加图片成功','iconname'=>$file_name);
         }else{
             $result = array('stat'=>'-2','str'=>'添加图片失败');
         }                               
         echo json_encode($result);
         exit;
    }

3.调用目的服务器的脚本,用来接收图片并保存服务器

file_get_contents($icon_url);curl

目的服务器脚本ui

function mkdirs($dir, $mode = 0777){
     if (is_dir($dir) || @mkdir($dir, $mode))
         return true;
     if (!mkdirs(dirname($dir), $mode))
            return false;
        return @mkdir($dir, $mode);
    }
     
    $picurl=$_GET["picurl"];
    $mubiaoyuming="http://bi.feiliu.com/";
    $pic=$picurl;

    if($picurl=="") die("没有图片地址");
    $str= file_get_contents($mubiaoyuming."/".$pic);
    //http://bi.feiliu.com/head/tk.png
    $rootdir = '/data0/www/html/gonghui/camera360';
    //$rootdir=str_replace("\\","/",$rootdir);//转换目录中的dir
    preg_match("/^[\S]+[\/]/",$pic,$matchs);

    $dir="";
    if($matchs) $dir=$matchs[0];

    mkdirs($rootdir."/".$dir);

    $h=@fopen($rootdir."/".$pic,"w+");
    //echo $rootdir."/".$pic;die;
    echo (@fwrite($h,$str))?"dook":"dopass";
相关文章
相关标签/搜索