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