`
tdwm
  • 浏览: 50009 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

看到一个js 的ajax的upload用iframe实现

阅读更多

原站连接

PHP and AJAX Image Upload

 

现在的ajax上传,都是用iframe做过渡的。实现的方式是:

 

1.js 生成或者页面中插入隐藏的iframe元素。

<iframe id='upiframe' name='upiframe' onload='getHtml()'></iframe>

 

2.提交的表单放到生成的iframe页面里面,

提交目标 target = 'upiframe'  ,

 

3.监听iframe的onload事件,获取docuemnt ,及上传后返回的信息。

 

下面是代码,看起来不是很多,用起来也很方便

 

function $m(theVar){
    return document.getElementById(theVar)
}
function remove(theVar){
    var theParent = theVar.parentNode;
    theParent.removeChild(theVar);
}
function addEvent(obj, evType, fn){
    if(obj.addEventListener)
        obj.addEventListener(evType, fn, true)
    if(obj.attachEvent)
        obj.attachEvent("on"+evType, fn)
}
function removeEvent(obj, type, fn){
    if(obj.detachEvent){
        obj.detachEvent('on'+type, fn);
    }else{
        obj.removeEventListener(type, fn, false);
    }
}
function isWebKit(){
    return RegExp(" AppleWebKit/").test(navigator.userAgent);
}
function ajaxUpload(form,url_action,id_element,html_show_loading,html_error_http){
    var detectWebKit = isWebKit();
    form = typeof(form)=="string"?$m(form):form;
    var erro="";
    if(form==null || typeof(form)=="undefined"){
        erro += "The form of 1st parameter does not exists.\n";
    }else if(form.nodeName.toLowerCase()!="form"){
        erro += "The form of 1st parameter its not a form.\n";
    }
    if($m(id_element)==null){
        erro += "The element of 3rd parameter does not exists.\n";
    }
    if(erro.length>0){
        alert("Error in call ajaxUpload:\n" + erro);
        return;
    }
    var iframe = document.createElement("iframe");
    iframe.setAttribute("id","ajax-temp");
    iframe.setAttribute("name","ajax-temp");
    iframe.setAttribute("width","0");
    iframe.setAttribute("height","0");
    iframe.setAttribute("border","0");
    iframe.setAttribute("style","width: 0; height: 0; border: none;");
    form.parentNode.appendChild(iframe);
    window.frames['ajax-temp'].name="ajax-temp";
    var doUpload = function(){
        removeEvent($m('ajax-temp'),"load", doUpload);
        var cross = "javascript: ";
        cross += "window.parent.$m('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";
        $m(id_element).innerHTML = html_error_http;
        $m('ajax-temp').src = cross;
        if(detectWebKit){
            remove($m('ajax-temp'));
        }else{
            setTimeout(function(){ remove($m('ajax-temp'))}, 250);
        }
    }
    addEvent($m('ajax-temp'),"load", doUpload);
    form.setAttribute("target","ajax-temp");
    form.setAttribute("action",url_action);
    form.setAttribute("method","post");
    form.setAttribute("enctype","multipart/form-data");
    form.setAttribute("encoding","multipart/form-data");
    if(html_show_loading.length > 0){
        $m(id_element).innerHTML = html_show_loading;
    }
    form.submit();
}
 

html中的设置

 

 

	<!-- 
							VERY IMPORTANT! Update the form elements below ajaxUpload fields:
							1. form - the form to submit or the ID of a form (ex. this.form or standard_use)
							2. url_action - url to submit the form. like 'action' parameter of forms.
							3. id_element - element that will receive return of upload.
							4. html_show_loading - Text (or image) that will be show while loading
							5. html_error_http - Text (or image) that will be show if HTTP error.

							VARIABLE PASSED BY THE FORM:
							maximum allowed file size in bytes:
							maxSize		= 9999999999
							
							maximum image width in pixels:
							maxW			= 200
							
							maximum image height in pixels:
							maxH			= 300
							
							the full path to the image upload folder:
							fullPath		= http://www.atwebresults.com/php_ajax_image_upload/uploads/
							
							the relative path from scripts/ajaxupload.php -> uploads/ folder
							relPath		= ../uploads/
							
							The next 3 are for cunstom matte color of transparent images (gif,png), use RGB value
							colorR		= 255
							colorG		= 255
							colorB		= 255

							The form name of the file upload script
							filename		= filename
						-->
						<form action="scripts/ajaxupload.php" method="post" name="standard_use" id="standard_use" enctype="multipart/form-data">
							<p><input type="file" name="filename" /></p>
							<button onclick="ajaxUpload(this.form,'scripts/ajaxupload.php?filename=filename&amp;maxSize=9999999999&amp;maxW=200&amp;fullPath=http://www.atwebresults.com/php_ajax_image_upload/uploads/&amp;relPath=../uploads/&amp;colorR=255&amp;colorG=255&amp;colorB=255&amp;maxH=300','upload_area','File Uploading Please Wait...&lt;br /&gt;&lt;img src=\'images/loader_light_blue.gif\' width=\'128\' height=\'15\' border=\'0\' /&gt;','&lt;img src=\'images/error.gif\' width=\'16\' height=\'16\' border=\'0\' /&gt; Error in Upload, check settings and path info in source code.'); return false;">Upload Image</button>
						</form>
 
分享到:
评论

相关推荐

    ajaxupload.js

    - **创建AjaxUpload对象**:接着,使用JavaScript创建一个AjaxUpload实例,并传入配置参数,如上传URL、文件类型限制等。 ```javascript var uploader = new AjaxUpload('#uploadButton', { url: 'upload.php', ...

    使用ajaxupload.js/ajaxfileupload.js实现文件上传

    `ajaxupload.js` 和 `ajaxfileupload.js` 是两个用于实现异步文件上传的JavaScript库,它们简化了这个过程并提供了丰富的自定义选项。 首先,`ajaxupload.js` 是一个轻量级的插件,它扩展了传统的Ajax功能,允许...

    jquery Ajaxupload应用

    **jQuery AjaxUpload应用详解** AjaxUpload是一款非常实用...无论是简单的个人项目还是复杂的商业应用,AjaxUpload都是一个值得信赖的工具。在实际应用中,根据项目需求,合理利用其各种特性,可以大大提升用户体验。

    AjaxUpload.rar 文件上传

    3. 构建隐藏iframe:为了能够处理文件上传的响应,AjaxUpload会在页面上创建一个隐藏的iframe,这个iframe将作为实际提交表单的目标。 4. 表单提交:文件选择后,AjaxUpload将文件数据封装到一个HTML表单中,并将该...

    ajaxupload在spring mvc4.2中实现简单文件上传

    在Spring MVC 4.2框架中实现AjaxUpload(异步文件上传)是一个常见的需求,它允许用户在不刷新整个页面的情况下进行文件上传,提供更好的用户体验。以下是对这一主题的详细阐述: 1. **AjaxUpload简介**: Ajax...

    使用隐藏的Iframe实现ajax无刷新上传

    使用隐藏的Iframe实现Ajax无刷新上传的基本思路是:创建一个隐藏的Iframe作为文件上传的目标,当用户选择文件并提交表单后,表单数据会通过POST方式发送到服务器端处理文件上传操作。由于Iframe的存在,上传过程不会...

    ajax无刷新上传ajax upload

    UpdatePanel能够将整个表单或部分表单封装在一个“虚拟”的IFrame中,从而实现后台处理而不刷新整个页面。 4. **界面设计**: 界面设计应简洁明了,包括选择文件的按钮、上传进度条、状态提示等元素。使用CSS和...

    关于Ajax与iframe及target的问题

    具体到Ajax与iframe的结合使用,一个常见的场景是实现无刷新的表单提交。例如,你可以创建一个iframe作为Ajax请求的目标,这样表单提交后,响应内容会加载到iframe中,而不会影响到主页面的其他内容。这种方式在处理...

    ajaxupload

    在实际开发中,我们可能会使用到名为AJAXFileUpload的库,这是一个专为实现Ajax文件上传功能的JavaScript插件。它封装了上述的实现步骤,提供了一套简单的API,便于开发者快速集成到项目中。使用时,只需在HTML中...

    ajax upload

    ASP.NET AJAX Control Toolkit提供了一个AjaxFileUpload控件,它可以方便地实现无刷新文件上传。只需在页面上添加控件,并在服务器端处理文件上传事件,即可实现Ajax上传。客户端的JavaScript库负责与服务器进行异步...

    ckeditor 自己写的一个简单的image上传js 运用iframe的ajax上传

    "ckeditor 自己写的一个简单的image上传js 运用iframe的ajax上传"是一个关于CKEditor自定义插件的实践案例,通过JavaScript实现了图片上传功能。下面将详细阐述这一知识点及其相关技术。 首先,CKEditor是一款开源...

    ajax iframe上传.

    以下是使用AJAX和iframe实现文件上传的基本步骤: 1. **创建隐藏的iframe**:在HTML页面中创建一个隐藏的iframe元素,设置其`name`属性,例如`iframeUploader`。这个iframe将成为文件提交的目标。 ```html &lt;iframe...

    AjaxUpLoad.js实现文件上传功能

    AjaxUpLoad.js的使用实现无刷新文件上传,如图。 图1 文件上传前 图2 文件上传后 1、创建页面并编写HTML 上传文档:  &lt;span id=doc&gt;&lt;input type=text disabled=disabled /&gt; &lt;input type=hidden id=...

    AjaxUpLoad.js实现文件上传

    AjaxUpload.js文件的代码,供大家参考,具体内容如下 /** * AJAX Upload ( http://valums.com/ajax-upload/ ) * Copyright (c) Andris Valums * Licensed under the MIT license ( ...

    ajax实现文件上传

    在 AJAX 出现之前,Web 开发人员就已经能够通过使用 iframe 来实现页面的部分刷新,尤其是对于文件上传这类操作而言。然而,随着 AJAX 的普及,更多的开发者转向了这种更为灵活和现代化的技术。 #### 使用 iframe ...

    真正实现ajax上传文件 兼容IE6789火狐谷歌世界之窗

    在现代Web开发中,文件上传是一个常见的功能,但要实现跨浏览器兼容性,尤其是在旧版本的Internet Explorer(如IE6、IE7、IE8、IE9)以及Firefox、Chrome和世界之窗等其他浏览器上,可能面临一些挑战。Ajax上传文件...

    使用jQuery ajaxupload插件实现无刷新上传文件

    本篇文章将详细介绍如何使用jQuery的ajaxupload插件来实现实时上传文件的功能,特别是针对图片的上传。 ### jQuery AJAX Upload 插件 jQuery ajaxupload插件是一个轻量级的解决方案,它允许用户在不刷新页面的情况...

    jQuery-1.8.3(&2.1.4).min.js&jquery;.fileupload&jquery;.iframe-transport

    由于浏览器的安全策略,某些情况下普通的Ajax上传可能无法工作,这时Iframe Transport通过创建一个隐藏的iframe来模拟表单提交,从而实现跨域和大文件的无刷新上传。这种技术对于那些不支持FormData或XMLHttpRequest...

Global site tag (gtag.js) - Google Analytics