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