,,AjaxFileUpload.js实现异步上传文件功能

,,AjaxFileUpload.js实现异步上传文件功能

本文主要介绍AjaxFileUpload.js异步上传文件的功能,具有一定的参考价值。感兴趣的朋友可以参考一下。

做软工作时,需要异步上传图片到服务器,不需要刷新,所以要用Ajax:

获取文件的val,然后发布它…

真正实现的时候,根本不可行。

于是我翻箱倒柜找了一个打包的js插件,可以异步上传文件。

AjaxFileUpload

这个插件的原理是创建隐藏表单和iframe,然后用JS提交得到返回值。

语法

$.ajaxFileUpload([options])

参数描述

Url上传处理程序地址。

FileElementId是需要上传的文件域的Id,即的ID。

secureuri是否启用安全提交,默认值为false。

数据类型服务器返回的数据类型。可以是xml,脚本,json,html。如果不填写,jQuery会自动判断。

提交成功后自动执行的处理功能。参数数据是服务器返回的数据。

错误:提交失败时自动执行的处理函数。

数据自定义参数。这个东西很有用,有上传图片相关数据的时候会用到。

提交自定义参数时,此参数应设置为post类型。

使用方法

介绍jQuery和ajaxFileUpload插件(由api中心提供)

script type=' text/JavaScript ' src=' https://API . mayuko . cn/js/jquery . min . js '/script

script type=' text/JavaScript ' src=' https://API . mayuko . cn/js/Ajax file upload . js '/script

扩展HTML代码

TD height=' 52 ' class=' input content ' div align=' center '附件1

输入类型='文件'名称='上载文件' id=' ss _上载文件1'/td

Tdspan=' 3 '输入类型=' button ' name=' submit 3 ' value=' upload ' class=' button ' id=' ss _ file _ upload '/TD

javascript,javascript

$('#ss_file_upload ')。单击(函数(){

$.ajaxFileUpload({

Url:'doajaxfileupload.php ',//请求地址

Secureuri:false,//需要安全协议吗?

FilelementID:' ss _ upload _ file1 ',//文件的ID

数据类型:' text ',//返回值类型,通常是json

成功:函数(img_data1)//成功后执行

{

$(ss_file1_url)。attr('value ',img _ data1);

警报(“上传成功”);

},

错误:函数(img_data1,状态,e){

警报(“上传失败”);

}

})

})

PHP代码

就是后台的上传操作。因为是课程设计,所以我把图片上传到了七牛云存储。

怎么上传到七牛?

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

//echo var _ dump($ _ FILES);

//echo $ _ FILES[' upload _ file '][' tmp _ name '];

$file_infor=array('status'=' ',' URL '=' ');

require _ once(' qiniu/io . PHP ');

require _ once(' qiniu/RS . PHP ');

$ bucket=“”;//你的桶

$ key 1=$ _ FILES[' upload _ file '][' name '];

$ access key=“”;//AK

$ secret key=“”;//SK

Qiniu_SetKeys($accessKey,$ secret key);

$ put policy=new Qiniu _ RS _ put policy($ bucket);

$upToken=$putPolicy-Token(空);

$ putExtra=new Qiniu _ putExtra();

$ putExtra-Crc32=1;

list($ret,$err)=Qiniu_PutFile($upToken,$key1,$ _ FILES[' upload _ file '][' tmp _ name '],$ put extra);

$url='存储桶域名'。$ key1

if($ _ FILES[' upload _ file '][' error ']0){

$ file _ infor[' status ']=' error ';

}

否则{

$ file _ infor[' status ']=' success ';

$ file _ infor[' URL ']=$ URL;

}

echo $ url

$_FILES是一个数组:

数组(

upload_file'=

数组(

name'='733626970332872971.jpg ',

type'='image/jpeg ',

' tmp _ name '=' C:\ \ Windows \ \ Temp \ \ phpf 203 . tmp ',

误差'=0,

size'=210744,

),

)

这样前台就可以在上传图片后接收url值并显示。

一般来说AjaxFileUpload的返回类型是json格式,但是前台在测试的时候一直无法解析json数据,所以无解之后改成了文本数据。

错误提示

1.未捕获的类型错误:对象函数(a,b){return new e.fn.init(a,b,h)}没有方法“handleError”

这是因为在更高版本的jQuery中已经取消了handleError方法,在ajaxfileupload.js中添加这个方法就足够了;)

handleError:函数(s,xhr,status,e ) {

//如果指定了本地回调,则触发它

如果(错误){

s.error.call( s.context || s,xhr,status,e);

}

//触发全局回调

如果(全球){

(s。上下文?jQuery(s.context) : jQuery.event).trigger( 'ajaxError ',[xhr,s,e]);

}

}

2 .成功:功能(数据)中数据为空值

应该是json数据的问题,我的解决方法是设置返回数据的类型是文字,用alert(data ":" data。长度);观察返回的数据是否有效。

3.一直跳转到错误方法中

当执行if(type==" JSON ")eval(" data=" data);会抛出异常,导致在处理异常的时候将状态="错误"因此一直执行错误方法。

将ajaxfileupload.js中uploadHttpData: function( r,type)方法的eval("data=" data " ")改为eval(" data=\ " " data " \ " ");

4.语法错误:语法错误错误

检查处理提交操作的服务器后台处理程序是否存在语法错误。

5 .改变第二次失效

绑定变化事件,实现选择图片后自动上传,但是触发一次变化事件后,下次就不会再触发变化事件。

原因:由于ajaxFileUpload把原来的文件元素替换成新的文件元素,所以之前绑定的变化事件就失效了。

解决方法:在$.ajaxFileUpload({option})中的回调函数里重新绑定变化事件。

$('#upload_file ').change(function(){

上传img();

});

UploadImg=function() {

$(窗口)。绑定('卸载前',函数(){return '正在上传,确定离开此页面吗?';});

$('#loading ').attr('style ',' display:block;')

$.ajaxFileUpload({

url:'upload_ajax.php ',

假的,

fileElementId:'上传文件,

数据类型:"文本",

成功:功能(数据)

{

$('#loading ').attr('style ',' display:none;');

if(data==0){

$('body ').突出({

类型:"错误",

消息: '上传失败,代码:00020 '

});

}

else if(data==1){

$('body ').突出({

类型:"成功",

消息: '上传成功!'

});

setTimeout(function(){

窗户。位置。重载();

},1000);

}

否则{

$('body ').突出({

类型:"错误",

消息: '格式错误,仅支持' jpg,png,gif '

});

}

$(窗口)。解除绑定(‘卸载前’);

$('#upload_file ').change(function () {

上传img();

});

},

错误:函数(数据,状态,e){

$('body ').突出({

类型:"错误",

消息: '上传失败,代码:00031 '

});

}

})

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用js实现简单的图片切换功能的方法,使用js实现简单的图片切换功能命令
  • 使用js实现简单的图片切换功能的方法,使用js实现简单的图片切换功能命令,使用JS实现简单的图片切换功能
  • 使用js实现数据格式化命令,使用js实现数据格式化的方法
  • 使用js实现数据格式化命令,使用js实现数据格式化的方法,使用js实现数据格式化
  • js选择日期,js日期选择控件,JS实现时间选择器
  • js轮播图视频教程,html5幻灯片图片轮播,js实现幻灯片轮播图
  • js轮播图菜鸟教程,js实现轮播图原理及示例
  • js轮播图菜鸟教程,js实现轮播图原理及示例,JS实现轮播图效果的3种简单方法
  • js获取dom节点的方法,js移除dom元素,JS实现DOM删除节点操作示例
  • js自动复制,网页一键复制,JS实现一键复制
  • js自动切换图片效果,js实现图片切换效果怎么做
  • js用数组实现图片切换,js中图片切换效果怎么实现,js实现图片数组中图片切换效果
  • js星空特效,js流星雨特效,js实现星星闪特效
  • js日期加减算天数,js实现日期按月份加减
  • js日期加减算天数,js实现日期按月份加减,js中日期的加减法
  • 留言与评论(共有 条评论)
       
    验证码: