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";
相關文章
相關標籤/搜索