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







