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

php+jquery 实现 ajax上传图片到非当前服务器的更多相关文章

  1. jquery 的 ajax 在 非阻塞 时返回 XMLHttpRequest

    jquery 的 ajax 在 非阻塞 时返回 是 [object XMLHttpRequest] 对象(firefox 下 alert(对象名) 也可以直接看到对象类型) 返回的内容用 reques ...

  2. 份-城市,基于jQuery的AJAX二级联动,用Struts2整合AJAX【非数据库版】

    package loaderman.provincecity; import java.io.IOException; import java.util.LinkedHashSet; import j ...

  3. 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache

    虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或 ...

  4. 第六章 jQuery和ajax应用

    ajax是异步JavaScript和xml的简称. 一. ajax补白 优势 不足(不一定是不足) 不需要任何插件(但需要浏览器支持js) XMLHttpRequest对象在不同浏览器下有差异 优秀的 ...

  5. Jquery实现异步上传图片

    利用jQuery的ajax函数就可以实现异步上传图片了.一开始我是想在处理程序中,直接用context.Request.Files来获取页面中的input file,但是不知道为什么一次获取不了.网上 ...

  6. 触碰jQuery:AJAX异步详解

    触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...

  7. jQuery调用AJAX异步详解[转]

    AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和X ...

  8. 从零开始学习jQuery (六) AJAX快餐

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...

  9. 触碰jQuery:AJAX异步详解(转)

    AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1)   使用CSS和X ...

随机推荐

  1. 1132 Cut Integer

    题意:略. 思路:注意除数可能为0的情况,不然会导致浮点错误. 代码: #include <iostream> #include <string> using namespac ...

  2. Spring Cloud与分布式系统

    本文不是讲解如何使用spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去” ...

  3. appiumsend_keys很慢的解决方法

    desired_caps['unicodeKeyboard']='True'        desired_caps['resetKeyboard']='True' 添加这两个项,默认使用appium ...

  4. 13-js的面向对象

    创建对象的几种常用的方式 1 . 使用Object或对象字面量创建对象 2 . 工厂模式创建对象 3 . 构造函数模式创建对象 4 . 原型模式创建对象 1 . 使用Object或对象字面量创建对象 ...

  5. npm中npm install 始终出错解决办法

    npm中npm install 始终出错解决办法 错误信息: C:\Windows\System32>npm install -g gulp npm ERR! Windows_NT 6.1.76 ...

  6. Java微信公众平台开发(三)--接收消息的分类及实体的创建

    转自:http://www.cuiyongzhi.com/post/41.html 前面一篇有说道应用服务器和腾讯服务器是通过消息进行通讯的,并简单介绍了微信端post的消息类型,这里我们将建立消息实 ...

  7. ubuntu网速慢解决方法

    ubuntu网速慢解决方法 (2011-04-02 09:58:21)         本人在Window7下装ubuntu10.10双系统,在window7下速度挺快的,到了ubuntu速度就慢了很 ...

  8. 最新Eclipse Photon安装tomcat

    发现最新版的eclipse竟然没有tomcat配置项,可能是因为spring boot很火,所以server默认就不包含tomcat,需要手动安装组件,  Version: Photon Releas ...

  9. vmware 安装不成功导致的问题解决以及右键菜单添加打开终端命令

    转自http://blog.csdn.net/puweilan/article/details/8609952 在VMware安装Ubuntu完成后,一直停留在VMware Easy Install, ...

  10. c语言实践 统计输入的一串正整数里面奇数和偶数的个数

    怎么考虑这个问题. 首先先确定肯定是需要一个变量保存输入的数据的,我们叫它input,最后结果要的是个数,所以需要另外两个变量来保存奇数的个数和偶数的个数. int input int countJ ...