用 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. 技术流:6大类37种方式教你在国内推广App

    转自:http://www.gamelook.com.cn/2015/01/201906 如何有效的推广自己App,是每个发行商都要考虑的问题,当然每个产品都有适合自己的推广方式.本文就集结了包括应用 ...

  2. 参数传递中编码问题(Get/Post 方式)(二)

    form有2中方法把数据提交给服务器,get 和post ,分别说下吧.(一)get 提交1.首先说下客户端(浏览器)的form表单用get 方法是如何将数据编码后提交给服务器端的吧. 对于get 方 ...

  3. 内网渗透神器xerosploit

    项目地址:https://github.com/LionSec/xerosploit 安装完成后直接在终端输入xerosploit打开 显示了本机的内网ip,mac地址,网关,网卡,输入help查看帮 ...

  4. java成神之——java中string的用法

    java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...

  5. VS2017自动添加头部注释

    让VS自动生成类的头部注释,只需修改两个文集即可,一下两个路径下个有一个 Class.cs文件 D:\Program Files (x86)\Microsoft Visual Studio\2017\ ...

  6. JAVA中跨平台分隔符

    在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常. 比如说要在temp目录下建立一个te ...

  7. delphi 原生 ADODB.recordset

    ADODB.recordset ..\source\rtl\win\Winapi.ADOInt.pas..\17.0\OCX\Servers\ADODB2010.pasCLASS_Recordset: ...

  8. POJ3624(背包问题)

    1.题目链接地址 http://poj.org/problem?id=3624 2.源代码 #include<iostream> using namespace std; #define ...

  9. 在页面完成读取EXCEL

    protected void btnUpload_Click(object sender, EventArgs e) { if (Page.IsValid) { string sFILENAME = ...

  10. php扩展开发1--添加函数

    目标:便携php扩展 要求实现 输出hello word 首先用的是php7.0.3   centos7.1或者centos6.+ 1.1 RPM安装PHP rpm -Uvh https://mirr ...