ajax 由于其无法直接发送表达形式的数据,因此不能直接使用ajax实现无刷新附件上传,但是可以通过其包装实现这一功能。
引入jquery 和 包装类
<script type="text/javascript" src="jquery.js"></script> <script language="JavaScript" type="text/javascript" src="ajaxfileupload.js"></script>
html中引用
<td> <input type="file" name="file" onchange="javascript:uploadFile()" title="上传图片" id="imagesfile"/> <input type="hidden" name="filmPic" id="filmPic" /> </td>
请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
上传js函数
function uploadFile() { $.ajaxFileUpload({ url : '${pageContext.request.contextPath}/service/filmBaseInfo/uploadImage', secureuri : false, fileElementId : 'imagesfile', dataType : 'json', error : function(data, status, e) { alert(data); }, success : function(data, status) { console.log(data); } }); }
请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
spring mvc 处接受附件
@RequestMapping(value="/service/filmBaseInfo/uploadImage", method =RequestMethod.POST) @ResponseBody public Result uploadCardImage(HttpServletRequest request, HttpServletResponse response, MultipartFile file) throws Exception{ Result result = null; AppServiceLog.info("begin upload the film image,and the file is {} ", file); result = fdfsUploadFileManager.fdfsUploadImage(file, AttachmentTypeEnum.USER, 120,120); return result; }
使用以上方式即可实现无刷新ajax附加上传。 好了,现在来看看 ajaxfileupload.js是如何实现的
jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"'; if(window.ActiveXObject) { if(typeof uri== 'boolean'){ iframeHtml += ' src="' + 'javascript:false' + '"'; } else if(typeof uri== 'string'){ iframeHtml += ' src="' + uri + '"'; } } iframeHtml += ' />'; jQuery(iframeHtml).appendTo(document.body); return jQuery('#' + frameId).get(0); }, createUploadForm: function(id, fileElementId, data) { //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>'); if(data) { for(var i in data) { jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(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 = new Date().getTime() var form = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data)=='undefined'?false:s.data)); var io = jQuery.createUploadIframe(id, s.secureuri); var frameId = 'jUploadFrame' + id; var formId = 'jUploadForm' + id; // Watch for a new set of requests if ( s.global && ! jQuery.active++ ) { jQuery.event.trigger( "ajaxStart" ); } var requestDone = false; // Create the request object var xml = {} if ( s.global ) jQuery.event.trigger("ajaxSend", [xml, s]); // Wait for a response to come back var uploadCallback = function(isTimeout) { 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 a local callback was specified, fire it and pass it the data if ( s.success ) s.success( data, status ); // Fire the global callback if( s.global ) jQuery.event.trigger( "ajaxSuccess", [xml, s] ); } else jQuery.handleError(s, xml, status); } catch(e) { status = "error"; jQuery.handleError(s, xml, status, e); } // The request was completed if( s.global ) jQuery.event.trigger( "ajaxComplete", [xml, s] ); // Handle the global AJAX counter if ( s.global && ! --jQuery.active ) jQuery.event.trigger( "ajaxStop" ); // Process result 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(){ // Check to see if the request is still happening if( !requestDone ) 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) { jQuery(form).attr('encoding', 'multipart/form-data'); } else { jQuery(form).attr('enctype', 'multipart/form-data'); } jQuery(form).submit(); } catch(e) { jQuery.handleError(s, xml, null, e); } jQuery('#' + frameId).load(uploadCallback ); return {abort: function () {}}; }, uploadHttpData: function( r, type ) { var data = !type; data = type == "xml" || data ? r.responseXML : r.responseText; // If the type is "script", eval it in global context if ( type == "script" ) jQuery.globalEval( data ); // Get the JavaScript object, if JSON is used. if ( type == "json" ) eval( "data = " + data ); // evaluate scripts within html if ( type == "html" ) jQuery("<div>").html(data).evalScripts(); return data; } })
相关推荐
### AJAX 实现文件上传 在探讨 AJAX 如何实现文件上传之前,我们首先简要回顾一下 AJAX 的历史背景及其带来的变革。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分...
本文将详细探讨如何使用Ajax实现文件上传,并特别关注文件上传进度条的实现。 一、Ajax基础 Ajax,全称Asynchronous JavaScript and XML,是一种创建动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以...
### 二、Ajax实现文件上传原理 Ajax文件上传主要涉及HTML、JavaScript(jQuery库常用)、XMLHttpRequest对象和服务器端处理。以下为基本步骤: 1. **创建HTML表单**:创建一个包含文件输入控件的HTML表单,设置`...
本文将深入探讨如何利用jQuery和AJAX实现文件上传,并重点介绍`ajaxfileupload.js`这个jQuery插件。 首先,jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理和Ajax交互等任务。而AJAX(Asynchronous ...
下面将详细讲解如何利用Ajax实现文件上传进度条。 首先,我们需要理解Ajax的基本原理。Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,通过在后台与服务器进行少量数据交换,使得网页实现异步...
jsf结合ajax实现文件上传,值得阅读
这个例子展示了如何在ASP.NET Web API中使用jQuery AJAX实现文件上传的基本流程。客户端通过AJAX发送文件到服务器,服务器接收文件并进行相应的处理。注意,实际应用中还需要考虑错误处理、文件大小限制、安全问题...
### 使用jQuery与Ajax实现文件上传功能(含上传进度显示) #### 概述 本文将详细介绍如何利用jQuery和Ajax技术来实现文件上传的功能,并且能够实时显示文件上传的进度。此功能在很多应用场景下非常实用,比如用户...
下面给大家分享下基于ajax实现文件上传并显示进度条。在jsp部分,需要设计一个表单,form的属性添加 enctype=”multipart/form-data”,设计一个iframe,作为隐藏。form的target等于iframe的name; 在servlet部分:...
使用普通表单的input框,引入多文件上传插件,传报文格式的参数,表单内容同时提交
在本教程中,我们将探讨如何结合`SpringMVC`和`Ajax`来实现异步文件上传,并讨论短视频背景以及`a`标签绑定文件域的相关知识。 1. **SpringMVC中的文件上传** - **MultipartFile接口**:`SpringMVC`提供了一个名为...
本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax**(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript...
本项目采用PHP作为后端处理语言,配合前端的AJAX技术,实现了文件管理的一系列功能,如新建目录、文件上传与下载、文件重命名以及删除。下面将详细阐述这些功能的实现原理和步骤。 **1. PHP基础** PHP是一种广泛...
4. **AJAX实现文件上传**: - 首先,创建一个`<input type="file">`元素让用户选择文件。 - 然后,使用JavaScript获取选中的文件,并创建一个`FormData`对象。 - 将文件添加到`FormData`对象,设置HTTP请求头,如...
本教程将基于标题“大文件上传,ajax实现,支持10G以上的上传”和描述,详细介绍如何使用AJAX实现大文件上传,并探讨其背后的原理和技巧。 首先,理解大文件上传的关键在于分块上传。当文件过大时,一次性上传整个...
在IT开发领域,使用AJAX实现文件上传功能是一项常见的需求。AJAX(Asynchronous JavaScript and XML)允许网页在不需要重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。文件上传则允许用户选择文件...
AjaxUpload则是实现异步文件上传的一种JavaScript库,它允许用户在不刷新整个页面的情况下进行文件上传,提高了用户体验。接下来,我们将详细讨论这两个知识点。 首先,**Spring** 是一个全面的后端应用框架,它...
在提供的`AsyncUploaderDemo.sln`和`AsyncUploaderDemo`文件中,很可能是包含了一个实际的示例项目,该项目可能展示了如何使用某种前端框架(如Angular、React或Vue)结合Ajax实现文件上传功能。通过打开和研究这个...
为了提供更好的用户体验,开发者通常会采用AJAX(Asynchronous JavaScript and XML)技术实现异步文件上传,避免传统方式下页面刷新带来的中断感。AJAX允许在后台与服务器进行通信,而无需刷新整个页面。本篇文章将...