摘要:前端部分使用主要是為了異步上傳文件,不需要開啟新的頁面進(jìn)行上傳由于不能上傳文件,該文件的代碼在本篇文章的最底部由于這個文件已經(jīng)很久沒用更新了,所以增加了來處理錯誤,前端代碼如下第一個中的屬性是為了限制上傳的文件屬性,其他文件可以去掉該屬性引
前端部分
使用ajaxFileUpload 主要是為了異步上傳文件,不需要開啟新的頁面進(jìn)行上傳!
由于segmentfault不能上傳文件,該文件ajaxFileUpload.js的代碼在本篇文章的最底部:
由于ajaxFileUpload這個文件已經(jīng)很久沒用更新了,所以增加了handleError: function( s, xhr, status, e )來處理錯誤,
前端代碼如下:
第一個input中的accept屬性是為了限制上傳的文件屬性,其他文件可以去掉該屬性
引用兩個js文件
上傳按鈕:
js代碼:
//圖片上傳 function ajaxFileUpload() { $.ajaxFileUpload({ url:"/ai/app/uploadImage",//用于文件上傳的服務(wù)器端請求地址 secureuri:false ,//一般設(shè)置為false fileElementId:"upload",//文件上傳控件的id屬性 dataType: "text",//返回值類型 一般設(shè)置為json success: function (message) //服務(wù)器成功響應(yīng)處理函數(shù) { layer.alert(message); $("#tool_icon").val(message); }, error: function (data, status, e)//服務(wù)器響應(yīng)失敗處理函數(shù) { alert(e); } }); return false; }后端部分
該項(xiàng)目使用的spring框架,需要配置bean,來接受上傳的文件
后端代碼
@ResponseBody @RequestMapping(value="/uploadImage",method=RequestMethod.POST) public String uploadImage(HttpServletRequest request,@RequestParam("imagefile") MultipartFile file) throws IOException{ String getOriginalFilename = null; logger.debug("文件原名: " + getOriginalFilename); logger.debug("文件名稱: " + file.getName()); logger.debug("文件長度: " + file.getSize()); logger.debug("文件類型: " + file.getContentType()); if( file.isEmpty()){ logger.error("upload image--------------------------------->failed"); return "please select a image"; } /**文件在服務(wù)器中的實(shí)際路徑*/ String realPath = request.getSession().getServletContext().getRealPath("/upload"); logger.debug("realPath---------------------------------------->"+realPath); logger.debug("getOriginalFilename----------------------------->"+file.getOriginalFilename()); /**寫入地址中*/ FileUtils.copyInputStreamToFile(file.getInputStream(), new File(realPath,file.getOriginalFilename())); /**使用原生方法*/ /* byte[] bytes = file.getBytes(); BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("/ai/images/icons/toolLogo/demo.png"))); stream.write(bytes); stream.close();*/ /**返回文件在服務(wù)器中的地址,用于存儲入庫*/ String resultUrl = "/ai/upload/"+file.getOriginalFilename(); logger.debug("upload image file result----------------------->"+resultUrl); return resultUrl; }
相關(guān)jar包下載:org.apache.commons.io_1.3.2.jar org.apache.commons.fileupload.jar
相關(guān)jar包的地址
參考blog:
jQuery插件之a(chǎn)jaxFileUpload
http://blessht.iteye.com/blog/1405057
http://blog.csdn.net/jadyer/article/details/11693705
http://www.cnblogs.com/rollenholt/p/3693087.html
ajaxFileUpload.js 源代碼
// JavaScript Document jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = "jUploadFrame" + id; if(window.ActiveXObject) { var io = document.createElement(""); 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(""); 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("
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64809.html
摘要:前端部分使用主要是為了異步上傳文件,不需要開啟新的頁面進(jìn)行上傳由于不能上傳文件,該文件的代碼在本篇文章的最底部由于這個文件已經(jīng)很久沒用更新了,所以增加了來處理錯誤,前端代碼如下第一個中的屬性是為了限制上傳的文件屬性,其他文件可以去掉該屬性引 前端部分 使用ajaxFileUpload 主要是為了異步上傳文件,不需要開啟新的頁面進(jìn)行上傳!由于segmentfault不能上傳文件,該文件a...
摘要:開發(fā)圖片上傳,圖片異步上傳是目前比較方便的功能這里我就不寫文件了,將代碼寫出來。 thinkphp開發(fā)圖片上傳,圖片異步上傳是目前比較方便的功能,這里我就不寫css文件了,將代碼寫出來。引入核心文件下載https://github.com/carlcarl/A...HTML下面首先在html頁面引入相關(guān)js資源 圖片上傳 接下來在body中創(chuàng)建相關(guān)div 封...
摘要:開發(fā)圖片上傳,圖片異步上傳是目前比較方便的功能這里我就不寫文件了,將代碼寫出來。 thinkphp開發(fā)圖片上傳,圖片異步上傳是目前比較方便的功能,這里我就不寫css文件了,將代碼寫出來。引入核心文件下載https://github.com/carlcarl/A...HTML下面首先在html頁面引入相關(guān)js資源 圖片上傳 接下來在body中創(chuàng)建相關(guān)div 封...
摘要:微信內(nèi)置的瀏覽器中禁止了標(biāo)簽無法進(jìn)行文件上傳如果想做一些圖片分享的微網(wǎng)站則必然需要用到文件上傳能例如布丁移動開發(fā)的聚吧微信公眾賬號中的發(fā)一張和閱讀即焚等有趣的功能通過對聚吧的微信公眾賬號進(jìn)行抓包分析其實(shí)現(xiàn)文件上傳通過上傳插件進(jìn)行圖片的上傳功 微信內(nèi)置的瀏覽器中 禁止了 type=file 標(biāo)簽 無法進(jìn)行文件上傳. 如果想做一些 圖片分享的微網(wǎng)站 則必然需要用到文件上傳能,例如 布丁移動...
閱讀 1650·2021-11-16 11:44
閱讀 2393·2021-10-11 11:07
閱讀 4036·2021-10-09 09:41
閱讀 663·2021-09-22 15:52
閱讀 3187·2021-09-09 09:33
閱讀 2702·2019-08-30 15:55
閱讀 2284·2019-08-30 15:55
閱讀 837·2019-08-30 15:55