用 html file控件上传图片,因为 $_FILES[“file”] 是传到当前服务器,想要上传到另外一个服务器需要通过服务器脚本实现。

1.图片上传

引入jquery 和 ajaxfileupload  两个js文件

                   

                                        
                  
<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.当前服务器接收图片,将图片保存到当前服务器上。

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);

目的服务器脚本

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";

 

版权声明:本文为hejun695原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hejun695/p/5311233.html