您的位置:

ajaxuploadjs源码分析,ajaxFileUpload

ajaxuploadjs源码分析,ajaxFileUpload

更新:

本文目录一览:

php文件上传(利用ajaxfileupload.js)

这个是js错误,是ajax无法解析返回结果导致的错误, $.ajaxFileUpload 的返回值支持 xml 和 json格式

如果dataType 设置为json 格式 在php 文件要输出的话 就需要用echo json_encode($_FILES); 来输出$_FILES 数组中所有的值,

如果只需要输入部分 就需要构造个 这样:

$res = array();

$res['file_name'] = $_FILES['file']['name'];

echo json_encode($res);

如果dataType 设置为 xml 的话,那就要自己将输出结果构造成 xml格式

引用(ajaxfileupload.js) ajaxfileupload.js报这错jQuery.handleError is not a function

在做ajaxFileUpload时,我也遇到这个问题,同时还有其它的问题,用了一下午的时间解决了:

问题1:如楼主所说,jQuery.handleError is not a function 原因是,经测试handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都没有这个函数了,因此在1.4.2中将这个函数复制到了ajaxFileUpload.js中,问题解决

handleError: function( s, xhr, status, e ) {

// If a local callback was specified, fire it

if ( s.error ) {

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

}

// Fire the global callback

if ( s.global ) {

(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );

}

},

问题2:一直得到error ,无法执行指定的success方法。通过追踪ajaxFileUpload的执行过程发现,在调用它自身的uploadHttpData函数时,当执行if(type=="json") eval("data = "+data);

会抛出异常,导致在处理异常的时候将status = "error" 因此一直执行error方法。

上网查询,得知eval函数是用来执行一段js代码,而并不是如我所想的反解json串

eval("data = "+data);的意思是 将data 赋值给 data参数 ,但是当我返回给页面的是一个简单的字符串,比如"OK" ,时,这样写就抛出异常。最后改为 eval("data = \" "+data+" \" ");即将返回的数据用双引号引起来当作字符串,然后赋给 data 。终于成功了。。。

贴出来,希望可以帮助到其他同样遇到这个问题的人。

求 javascript ajaxfileupload.js

jQuery.extend({

createUploadIframe: function(id, uri)

{

//create frame

var frameId = 'jUploadFrame' + id;

if(window.ActiveXObject) {

var io = document.createElement('iframe id="' + frameId + '" name="' + frameId + '" /');

if(typeof uri== 'boolean'){

io.src = 'javascript:false';

}

else if(typeof uri== 'string'){

io.src = uri;

}

}

else {

var io = document.createElement('iframe');

io.id = frameId;

io.name = frameId;

}

io.style.position = 'absolute';

io.style.top = '-1000px';

io.style.left = '-1000px';

document.body.appendChild(io);

return io;

},

createUploadForm: function(id, fileElementId)

{

//create form

var formId = 'jUploadForm' + id;

var fileId = 'jUploadFile' + id;

var form = jQuery('form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"/form');

var oldElement = jQuery('#' + fileElementId);

var newElement = jQuery(oldElement).clone();

jQuery(oldElement).attr('id', fileId);

jQuery(oldElement).before(newElement);

jQuery(oldElement).appendTo(form);

//set attributes

jQuery(form).css('position', 'absolute');

jQuery(form).css('top', '-1200px');

jQuery(form).css('left', '-1200px');

jQuery(form).appendTo('body');

return form;

},

ajaxFileUpload: function(s) {

// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout

s = jQuery.extend({}, jQuery.ajaxSettings, s);

var id = s.fileElementId;

var form = jQuery.createUploadForm(id, s.fileElementId);

var io = jQuery.createUploadIframe(id, s.secureuri);

var frameId = 'jUploadFrame' + id;

var formId = 'jUploadForm' + id;

if( s.global ! jQuery.active++ )

{

// Watch for a new set of requests

jQuery.event.trigger( "ajaxStart" );

}

var requestDone = false;

// Create the request object

var xml = {};

if( s.global )

{

jQuery.event.trigger("ajaxSend", [xml, s]);

}

var uploadCallback = function(isTimeout)

{

// Wait for a response to come back

var io = document.getElementById(frameId);

try

{

if(io.contentWindow)

{

xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;

xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;

}else if(io.contentDocument)

{

xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;

xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;

}

}catch(e)

{

jQuery.handleError(s, xml, null, e);

}

if( xml || isTimeout == "timeout")

{

requestDone = true;

var status;

try {

status = isTimeout != "timeout" ? "success" : "error";

// Make sure that the request was successful or notmodified

if( status != "error" )

{

// process the data (runs the xml through httpData regardless of callback)

var data = jQuery.uploadHttpData( xml, s.dataType );

if( s.success )

{

// ifa local callback was specified, fire it and pass it the data

s.success( data, status );

};

if( s.global )

{

// Fire the global callback

jQuery.event.trigger( "ajaxSuccess", [xml, s] );

};

} else

{

jQuery.handleError(s, xml, status);

}

} catch(e)

{

status = "error";

jQuery.handleError(s, xml, status, e);

};

if( s.global )

{

// The request was completed

jQuery.event.trigger( "ajaxComplete", [xml, s] );

};

// Handle the global AJAX counter

if(s.global ! --jQuery.active)

{

jQuery.event.trigger("ajaxStop");

};

if(s.complete)

{

s.complete(xml, status);

} ;

jQuery(io).unbind();

setTimeout(function()

{ try

{

jQuery(io).remove();

jQuery(form).remove();

} catch(e)

{

jQuery.handleError(s, xml, null, e);

}

}, 100);

xml = null;

};

}

// Timeout checker

if( s.timeout 0 )

{

setTimeout(function(){

if( !requestDone )

{

// Check to see ifthe request is still happening

uploadCallback( "timeout" );

}

}, s.timeout);

}

try

{

var form = jQuery('#' + formId);

jQuery(form).attr('action', s.url);

jQuery(form).attr('method', 'POST');

jQuery(form).attr('target', frameId);

if(form.encoding)

{

form.encoding = 'multipart/form-data';

}

else

{

form.enctype = 'multipart/form-data';

}

jQuery(form).submit();

} catch(e)

{

jQuery.handleError(s, xml, null, e);

}

if(window.attachEvent){

document.getElementById(frameId).attachEvent('onload', uploadCallback);

}

else{

document.getElementById(frameId).addEventListener('load', uploadCallback, false);

}

return {abort: function () {}};

},

uploadHttpData: function( r, type ) {

var data = !type;

data = type == "xml" || data ? r.responseXML : r.responseText;

// ifthe type is "script", eval it in global context

if( type == "script" )

{

jQuery.globalEval( data );

}

// Get the JavaScript object, ifJSON is used.

if( type == "json" )

{

eval( "data = " + data );

}

// evaluate scripts within html

if( type == "html" )

{

jQuery("div").html(data).evalScripts();

}

return data;

}

});

这个是ajaxfileupload.js的源码,自己建个文件,重命名就ok了.

给你发了个fileManager的php源程序,好好研究.

ajaxfileupload.js上传文件时后台用java怎么接收文件流

前台:ajax实现,点击上传,确认表单发送到后台,此时ajax做的事情,就是确认表单,这是一个伪ajax ,ajax不能实现文件上传,可以使用一个JS,叫做ajaxfileupload.js的用法。

后台无非是接收了,没什么好讲

java 使用 AjaxUpload.js 实现上传文档的时候需要注意哪些?

ajax是无法提交文件的,所以在上传图片并预览的时候,我们经常使用Ifame的方法实现看似异步的效果。但是这样总不是很方便的,AjaxFilleUpload.js对上面的方法进行了一个包装,使得我们不用去管理Iframe的一系列操作,也不用影响我们的页面结构,实现异步的文件提交。

html:

复制代码 代码如下:

input type="file" name="upload" hidden="hidden" id="file_upload" accept=".zip" /

js:

复制代码 代码如下:

$.ajaxFileUpload({

url:'${pageContext.request.contextPath}/Manage/BR_restorePic.action', //需要链接到服务器地址

secureuri:false,

fileElementId:'file_upload', //文件选择框的id属性

dataType: 'text', //服务器返回的格式,可以是json、xml

success: function (data, status) //相当于java中try语句块的用法

{

$('#restoreDialog').html(data);

//alert(data);

},

error: function (data, status, e){ //相当于java中catch语句块的用法

$('#restoreDialog').html("上传失败,请重试");

}

});

这个方法还会出现一个问题,就是input只能使用一次的问题,input第二次的onchange将不会被执行,这应该是与浏览器的有关,解决办法就是替换这个input

像这样:

复制代码 代码如下:

$('#file_upload').replaceWith('input type="file" name="upload" hidden="hidden" id="file_upload" accept=".zip" /');

ajaxuploadjs源码分析,ajaxFileUploa

本文目录一览: 1、php文件上传(利用ajaxfileupload.js) 2、引用(ajaxfileupload.js) ajaxfileupload.js报这错jQuery.handleErro

2023-12-08
java客户端学习笔记(java开发笔记)

2022-11-14
java笔记,大学java笔记

2022-11-28
java包笔记,Java语言包

2022-11-18
java学习笔记(java初学笔记)

2022-11-14
java基础第一天学习笔记(java课程笔记)

2022-11-09
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
java笔记,尚硅谷java笔记

2022-12-01
java基础知识学习笔记一,Java基础笔记

2022-11-21
重学java笔记,java笔记总结

2022-11-23
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
发篇java复习笔记(java课程笔记)

2022-11-09
关于java性能的小笔记(java代码性能分析)

2022-11-12
前端学习笔记

2023-05-12
java第九天笔记,java第九章

2022-11-20
javascript简要笔记,JavaScript读书笔记

2022-11-17
关于java学习笔记良葛格的信息

2022-11-11
jsp上一条记录代码,jsp上一条记录代码不见了

本文目录一览: 1、上一页12345下一页这样的JSP代码怎么实现 2、有关向数据库中添加一条记录的问题,JSP代码 3、请问:关于jsp中的一小段代码 上一页12345下一页这样的JSP代码怎么实现

2023-12-08
每日java学习笔记(java高手笔记)

2022-11-15