废话不多说,直接展示关键代码片段
HTML部分:

<div class="form-group"><label class="col-sm-2 control-label">图片:</label><input name="WxQRCode" type="file" onchange="fileUpload('WxQRCode');" id="WxQRCode"><input type="hidden" name="wechat_code" id="wechat_code"/>
</div>

JS部分:

<script src="jquery-1.7.1.js" type="text/javascript"></script>
<script src="ajaxfileupload.js" type="text/javascript"></script>
<script type="text/javascript">
//上传
function fileUpload(file) {var url = "服务器端请求地址";$.ajaxFileUpload( {url : url,//用于文件上传的服务器端请求地址//secureuri : false,      //一般设置为falsefileElementId : file,    //文件上传空间的id属性  <input type="file" id="file" name="file" />dataType : 'json',       //返回值类型 一般设置为jsonsuccess : function(data, status) {if(data.error == 0){if(file == 'WxQRCode'){$('#wechat_code').val(data.url);$('#img-wechat').attr('src',data.url);}else{$('#alipay_code').val(data.url);$('#img-alipay').attr('src',data.url);}}}})
}
</script>

PHP部分:

if ($_FILES['WxQRCode']) {$upload = $this->getupload("/user/{$filedate}/", '', 'WxQRCode');//上传类if ($upload['file']) {$msg = json(array('error' => 0, 'url' => $upload['file']));} elseif ($upload['errno']) {$msg = json(array('error' => 1, 'message' => $upload['errmsg']));}
}

可能会遇到的问题:
1、Object function (a,b){return new e.fn.init(a,b,h)} has no method ‘handleError’,这个是chrome浏览器报的错误,这是jQuery版本的问题,jQuery版本1.4.2之前的版本才有handlerError方法,之后就不存在了,所以在ajaxfileupload.js最后加上handleError方法就可以解决

 //自添加方法handleErrorhandleError: function( s, xhr, status, e )      {// If a local callback was specified, fire itif ( s.error ) {s.error.call( s.context || s, xhr, status, e );}// Fire the global callbackif ( s.global ) {(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );}}

2、调用ajaxfileupload方法后文本选择框的值丢失,选择图片后,onchange事件调用ajaxfileupload方法然后在后台进行图片校验,但调用完后文本选择框的值就丢失了,如果我不调用ajaxfileupload的话,文本选择框就会显示图片的路径(IE有这个问题,但chrome是没问题的),这是浏览器兼容性问题。
看了下ajaxfileupload的源码,它是自动生成一个新的表单,然后将所选的文件提交上去的,部分代码是这样

var oldElement = jQuery(files);
var newElement = jQuery(oldElement).clone();
jQuery(oldElement).attr('id', fileId);
jQuery(oldElement).before(newElement);
jQuery(oldElement).appendTo(form);

由于安全考虑,在IE下 ,jquery的clone并不能克隆input field的值,所以就导致克隆后新的input丢失了原来的值。解决办法:
找到jQuery(form).submit(); 在后面加上这四句,原理是提交后把元素再复制回来

var oldElement = jQuery('#jUploadFile' +id ,form);
var newElement =  jQuery('#'+s.fileElementId );
jQuery(newElement).replaceWith(oldElement);
jQuery(oldElement).attr('id', s.fileElementId );

最后附上修改好之后的ajaxfileupload.js
http://download.csdn.net/download/kunpeng1987/10132744

ajax上传文件之ajaxfileupload使用详解相关推荐

  1. java的sftp文件传输_java使用SFTP上传文件到资源服务器方法详解

    java使用SFTP上传文件到资源服务器 本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: p ...

  2. SMW0上传文件到数据库层详解

    1.T-CO DE: SMW0 2.选择Binary data for WebRFC applications 3.然后F8 4.输入Package 按F8进入. 5.首先你要维护文件类型.选择Set ...

  3. 上传html 0字节,HTML ajax 上传文件限制文件的类型和文件大小

    html js function getFileType(filePath){ //获取文件的后缀名 var startIndex = filePath.lastIndexOf(".&quo ...

  4. flask ajax 上传 图片,flask jQuery ajax 上传文件

    1.html 代码 注:1.html 部分主要是一个form表单,其中表单的enctype = "multipart/form-data" 必须要有. 2.由于我的页面背景颜色设置 ...

  5. 页面无刷新ajax上传文件--模拟iframe,超简单

    前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题的.但是$.post直接上传图片是不可行的. 后来看到网上的一些解决方案,有现成的ajax上传文件的封装的方法 ...

  6. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...

    本篇文章给大家带来的内容是关于Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 问题 A ...

  7. php 通过ajax上传文件,php – 通过ajax上传文件

    我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功附加到div uploadfile_show. 但它不起作用,几乎没有问题,下面是我的代码有什么建议吗? ...

  8. Django框架 之 Form表单和Ajax上传文件

    Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...

  9. php+ajax上传文件

    直接上源代码 html页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" > ...

最新文章

  1. POJ1269:Intersecting Lines(判断两条直线的关系)
  2. Windows下MySQL数据库名及表名无法大写的问题
  3. [原创]windows server 2012 AD架构试验系列 – 12 配置操作主机
  4. JAVA8给我带了什么——并流行和接口新功能
  5. php全词查询,php 关键词查询的实现方法
  6. Android 设计模式实战之关于封装计费代码库的策略模式详谈
  7. DPDP ACL 1 -- DPDK ACL算法介绍
  8. go 调用linux命令ping,使用Golang实现简单Ping过程-Go语言中文社区
  9. jpa Specification in 用法
  10. android抽屉效果
  11. 近距离传感器(proximity sensor)
  12. maskrcnn训练问题报错:selected_polygons.append(self.polygons[i]) IndexError: list index out of range
  13. 妹子图kotlin版
  14. 大恒相机文件配置V1.1
  15. Java 序列化详解
  16. 第一讲 Matlab/Simulink入门——简单系统模型的Simulink仿真
  17. 罗斯柴尔德投资公司增加对GBTC的投资
  18. 一个曾经纯数学专业毕业的未来算法工程师内心独白
  19. 为杰克·韦尔奇点赞(我已离开通用)
  20. 网络安全不可忽视!企业如何做好网络安全。

热门文章

  1. influxDB的group by time(intervals)
  2. yate学习--yateclass.h--class YATE_API NamedCounter : public String
  3. python数据分析可视化大众点评网餐厅口碑包含数据
  4. 局域网流量监控原理(java)
  5. 深圳创服机构创成汇投融资对接指南
  6. 计算机任务栏的透明颜色设置,Win10系统任务栏如何设置透明?Win10任务栏设置完全透明效果方法...
  7. 解决IDEA中Maven无法下载源码的问题
  8. php有个schost.exe_进程中有多个svchost.exe进程,这是怎么回事??
  9. cad的计算机功能,走进CAD在线操作功能!
  10. 学计算机专业买什么手机,准大学生要买什么样的电脑与手机呢?这些要知道,绝不花冤枉钱!...