zoukankan      html  css  js  c++  java
  • php+jquery 实现 ajax上传图片到非当前服务器

    用 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";
  • 相关阅读:
    Manjaro Linux自带的Python没有安装IDLE的解决办法
    Python入门 | IDLE的介绍和使用方法
    用U盘装CentOS 7出现dracut:/#问题的解决办法
    在Ubuntu下,如何安装坚果云deb文件
    windows7下进行ubuntu U盘启动盘的制作
    oracle 死锁和锁等待区别
    MySQL数据库设计总结
    oracle开机自启
    微信备份提示当前网络状况复杂,请尝试使用其他网络的解决方法
    ORA-27090 Unable to reserve kernel resources for asynchronous disk I/O
  • 原文地址:https://www.cnblogs.com/hejun695/p/5311233.html
Copyright © 2011-2022 走看看