var Uploader = (function(){
/**
* @param options
* @param callback
* @returns
* @desc 创建iframe
*/
var iframe = function(options) {
options = options || {
id : 'iframe' + Math.random(),
name : 'iframe',
src : ''
};
var iframe;
try{
iframe = document.createElement('<iframe name=' + options.name + '>');
}catch(e) {
iframe = document.createElement('iframe');
iframe.name = options.name;
}
options.id && (iframe.id = options.id);
iframe.src = options.src;
iframe.style.cssText = options.cssText;
return iframe;
};
/**
* @param {file}
* @return {}
* @desc 上传文件
*/
function Uploader(file){
var name,hidden;
var uuid = Uploader.uuid++;
this.state = 0;
this.file = file;
this.form = file.form;
name = 'upload_file_'+ uuid;
this.iframe = iframe({
name:name,
src:'blank.html',
cssText:'display:none;'
});
document.body.appendChild(this.iframe);
this.form.target = name;
};
Uploader.uuid = 0;
Uploader.prototype = {
upload:function(callback){
//生成JSONP回调
var ts,jsonp,uploader,action,jsonpCallback;
ts = (new Date()).getTime();
jsonp = 'jsonp' + ts;
uploader = this;
window[jsonp] = function(ret){
callback(ret);
uploader.state = 0;
};
action = this.form.action;
jsonpCallback = 'parent.' + jsonp;
if(action.indexOf('callback') > -1){
action = action.replace(/jsonp\d+/,jsonpCallback);
}else{
action += (action.indexOf('?') > -1 ? '&callback=' : '?callback=') + jsonpCallback;
}
this.form.action = action;
this.state = 1;//开始上传
this.form.submit();
return jsonp;
},
readyState:function(){
return this.state;
},
cancel:function(jsonp){
typeof window[jsonp] && (window[jsonp] = function(){});
}
};
return Uploader;
})();
这种上传文件的方法不会刷新页面,类似于Ajax。原理就是将要提交的表单target属性和页面中隐藏的iframe的name属性相等。实际就是iframe做提交
而iframe本身是不可见的,所以用户不会看到页面刷新的效果,请求成功或者失败服务器端都要返回一个script元素,该元素里面有一个
发送请求时候传递的回调函数callback,请求成功或者失败就会执行callback函数把服务器处理的结果作为回调函数传递到前端。
页面调用:
var file = document.getElementById('file'),uploader;
uploader = new Uploader(file);
uploader.upload(function(data){
//成功或失败处理
});
分享到:
相关推荐
在现代Web应用中,文件上传是一项常见的功能,而“Flash JavaScript异步上传文件——SWFUpload”正是这种功能的一种实现方式。SWFUpload是一个开源的JavaScript库,它结合了Adobe Flash技术,允许用户在不刷新整个...
`jQuery.uploadify`是一个广泛使用的JavaScript插件,用于实现文件的异步上传。在提供的文件列表中,`uploadify.css`和`jquery.uploadify-3.1.js`(以及其压缩版`jquery.uploadify-3.1.min.js`)是这个插件的核心...
`jsp异步上传文件`这个主题聚焦于如何利用JavaServer Pages (JSP)、Servlet以及JavaScript的ajaxFileupload.js插件来实现在Web应用中异步上传文件。这种方式可以提供更好的用户体验,因为文件上传不会阻塞页面的其他...
在ASP.NET中,异步上传小文件是一种提高用户体验的技术,特别是在用户需要上传多个小型文件时。这种方式避免了页面刷新,使得上传过程更加流畅。本文将详细介绍如何实现ASP.NET中的异步文件上传,并讨论相关的前端...
### Java实现多文件异步上传知识点详解 在现代Web应用开发中,文件上传是一个非常常见的需求,尤其是在涉及图片、文档等多媒体数据的应用场景下。为了提高用户体验,异步上传技术得到了广泛的应用。本文将深入探讨...
标签“ajax”和“异步文件上传”表明,这个主题是关于使用Ajax技术实现实时文件上传,而无需等待整个页面刷新。在实际项目中,你可能还需要考虑错误处理、文件大小限制、多文件上传、以及安全性等问题。 至于提供的...
而AJAX异步上传则不同,它通过JavaScript创建XMLHttpRequest对象,利用这个对象向服务器发送请求,然后在后台处理数据,最后将响应结果回传到客户端,整个过程不会刷新页面,提供更好的用户体验。 jQuery库为开发者...
在本项目"JQuery异步上传文件demo"中,我们将探讨如何使用jQuery的Ajax功能来实现这一目标。 首先,让我们了解异步上传的基本原理。传统的文件上传通常涉及表单提交,这会导致页面刷新,打断用户操作。而异步上传则...
而`Ajax`技术则使得页面可以在不刷新的情况下与服务器进行交互,实现异步上传,极大地提升了用户体验。在本教程中,我们将探讨如何结合`SpringMVC`和`Ajax`来实现异步文件上传,并讨论短视频背景以及`a`标签绑定文件...
在IT领域,多文件异步上传是一项常见的需求,特别是在网页应用和云计算环境中。这个主题涉及到前端、后端以及文件压缩等多个技术层面。以下是对这些知识点的详细解释: 1. **多文件上传**:多文件上传是指用户可以...
而异步上传,通常借助JavaScript、AJAX和Web服务技术,使得文件上传过程在后台进行,用户界面可以保持活动状态,提供更流畅的交互体验。 在ASP.NET中,我们通常使用ASP.NET AJAX控件工具包或jQuery库中的FileUpload...
5. **异步上传实现**: - 创建一个HTML表单,包含一个`<input type="file">`元素,让用户选择要上传的文件。 - 使用JQuery监听`change`事件,当用户选择文件后触发。 - 使用`FormData`创建一个新的表单数据对象,...
在IT行业中,JavaScript(简称JS)作为前端开发的主要语言,其异步上传文件的功能是现代网页应用中的一个重要组成部分。这个“js异步上传文件插件”涵盖了三种不同的异步上传方式,结合HTML、JS和Ajax技术,为开发者...
在JavaScript中,异步上传文件是一项常见的需求,特别是在Web应用中,用户可能需要上传图片、文档等资源。这里我们将深入探讨如何使用JavaScript、Ajax、Servlet、Action和JSP来实现这个功能。 首先,我们从...
Uploadify 是一个流行的JavaScript库,用于实现文件的异步上传功能。它利用Flash技术提供了一种用户友好的界面,使得用户可以选择多个文件并一次性上传,而无需等待每个文件的上传完成。在“uploadify 文件异步上传 ...
在`uploadReplace.js`和`czyx.js`中,可能会有处理异步上传的JavaScript代码,使用XMLHttpRequest或fetch API向服务器发送请求,上传文件数据。 3. **Ajax**:Ajax(异步JavaScript和XML)是创建动态网页的关键技术...
Ajax异步上传文件技术应运而生,它允许用户在上传文件时保持页面状态,提供无缝的交互体验。SpringMVC作为流行的Java Web框架,支持多种文件上传方式,与Ajax结合可以实现这一功能。 首先,我们需要了解Ajax的核心...
综上所述,SWFUpload 是一个功能强大的文件上传解决方案,尤其适用于需要在老版本浏览器中实现多文件异步上传的场景。结合其与PHP的兼容性和中文文档的支持,使得它成为开发者们的得力工具。然而,随着HTML5的普及,...
**Ajax异步上传文件插件详解** 在现代Web开发中,用户交互的实时性和流畅性是提升用户体验的关键因素之一。Ajax(Asynchronous JavaScript and XML)技术的出现,使得页面无需刷新即可实现数据的异步更新,极大地...
AjaxFileUpload是基于jQuery的一个插件,它利用了AJAX技术来实现文件的后台异步上传。AJAX(Asynchronous JavaScript and XML)的核心在于通过JavaScript与XMLHttpRequest对象进行通信,使得前端与后台的数据交换...