前端部分

使用ajaxFileUpload 主要是为了异步上传文件,不需要开启新的页面进行上传!
由于segmentfault不能上传文件,该文件ajaxFileUpload.js的代码在本篇文章的最底部:
由于ajaxFileUpload这个文件已经很久没用更新了,所以增加了handleError: function( s, xhr, status, e )来处理错误,

前端代码如下:
第一个input中的accept属性是为了限制上传的文件属性,其他文件可以去掉该属性

引用两个js文件

 <script src="jquery-1.7.1.js" type="text/javascript"></script><script src="ajaxfileupload.js" type="text/javascript"></script>

上传按钮:

<input  type="file" id="upload" name="imagefile" accept="image/png,image/gif"  />
<input  type="button"  value="上传" onclick="return ajaxFileUpload();"/>

js代码:

    //图片上传function ajaxFileUpload(){$.ajaxFileUpload({url:'/ai/app/uploadImage',//用于文件上传的服务器端请求地址secureuri:false ,//一般设置为falsefileElementId:'upload',//文件上传控件的id属性  <input type="file" id="upload" name="upload" />dataType: 'text',//返回值类型 一般设置为jsonsuccess: function (message)  //服务器成功响应处理函数{layer.alert(message);$("#tool_icon").val(message);},error: function (data, status, e)//服务器响应失败处理函数{alert(e);}});return false;}

后端部分

该项目使用的spring框架,需要配置bean,来接受上传的文件

<!-- 上传文件拦截,设置最大上传文件大小   10M=10*1024*1024(B)=10485760 bytes -->  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  <property name="maxUploadSize" value="10485760" />  </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";}/**文件在服务器中的实际路径*/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();*//**返回文件在服务器中的地址,用于存储入库*/String resultUrl = "/ai/upload/"+file.getOriginalFilename();logger.debug("upload image file result----------------------->"+resultUrl);return resultUrl;}

相关jar包下载:org.apache.commons.io_1.3.2.jar org.apache.commons.fileupload.jar
相关jar包的地址
参考blog:
jQuery插件之ajaxFileUpload
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 framevar 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 attributesjQuery(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 requestsjQuery.event.trigger( "ajaxStart" );}            var requestDone = false;// Create the request objectvar 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 notmodifiedif( 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 datas.success( data, status );};                 if( s.global ){// Fire the global callbackjQuery.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 completedjQuery.event.trigger( "ajaxComplete", [xml, s] );};// Handle the global AJAX counterif(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 checkerif( s.timeout > 0 ) {setTimeout(function(){if( !requestDone ){// Check to see ifthe request is still happeninguploadCallback( "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 contextif( type == "script" ){jQuery.globalEval( data );}// Get the JavaScript object, ifJSON is used.if( type == "json" ){eval( "data = " + data );}// evaluate scripts within htmlif( type == "html" ){jQuery("<div>").html(data).evalScripts();}return data;},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] );  }  }
});

使用 ajaxFileUpload 进行图片上传相关推荐

  1. ajax中fileelementid,使用 ajaxFileUpload 进行图片上传

    前端部分 使用ajaxFileUpload 主要是为了异步上传文件,不需要开启新的页面进行上传! 由于segmentfault不能上传文件,该文件ajaxFileUpload.js的代码在本篇文章的最 ...

  2. C#+aspx+ajaxfileupload 实现图片上传

    Html 代码及调用方法: <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> <h ...

  3. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....

    个人笔记,以备后用. 表体代码: 查看图片 js代码(记得要引入jquery库和ajaxfileupload库): //上传文件id号 function fileUpload(uploadFileId ...

  4. Jquery,ajaxFileUpload插件完成图片上传

    ajaxFileUpload:  注意:ajaxFileUpload是不支持 async:false 同步的: /*质量证书*/$.ajaxFileUpload({url: "/config ...

  5. AjaxFileUpload组件结合Struts2异步图片上传

    使用AjaxFileUpload组件结合Struts2异步上传需要添加如下文件: ajaxfileupload.js jquery-x.x.x-min.js struts2相关jar包 AjaxFil ...

  6. ajax图片上传插件demo,jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)...

    这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章 的一个收关.但是最初也是因为想做这么一个功能,一点一点的引发出了好多问题,不断去学习,研究,才写了这三篇. 早些时候已经实现了上 ...

  7. ajaxfileupload+spring mvc 单张图片上传

    2019独角兽企业重金招聘Python工程师标准>>> //jsp页面 1.首先引入ajaxfileupload.js 2.form一定要配上enctype="multip ...

  8. ajaxFileUpload图片上传、限制后缀和张数 带参数

    2019独角兽企业重金招聘Python工程师标准>>> ajaxFileUpload图片上传.限制后缀和张数  带参数 HTML:  <input type="fil ...

  9. php js实现异步图片上传,使用php+js异步上传图片

    HTML语言如下,隐藏文件文本框,写一个button按钮,通过点击该按钮来弹出选择图片对话框: JS语言如下,主要用ajaxfileupload.js来传送图片文件信息到后端给PHP处理,然后接收PH ...

最新文章

  1. atcoder题目合集(持续更新中)
  2. 我的第一个Java程序 Hello World!
  3. 二进制状态压缩相关操作
  4. python3(十一)内置模块和类型转换
  5. 前端学习(2918):v-on的补充
  6. Qt工作笔记-进程间的通信(通过QSharedMemory)
  7. 目前 NORTON SEP 及各类产品 离线升级包下载及升级方法
  8. 小程序学习笔记(8)-导航组件
  9. 各种学习资料库,非常好的收藏汇总!!!!!
  10. 灵界的科学丨五、心灵与意识的科学奥祕
  11. windows系统漏洞修复CVE-2016-2183,CVE-2013-2566,CVE-2015-2808
  12. pdf怎么插入页码步骤介绍
  13. 如何增加你微博的粉丝人数?微博推广20绝招
  14. C语言学习日记(2)——写个Hello,World测试一下
  15. Spring之Specification复杂查询和Criteria查询
  16. 哈拉比数据库;为了家人
  17. java 堆内存结构_JAVA之内存结构
  18. 数据透视表中巧用平均值计算及时妥投率
  19. 【高等数学】三.一元函数积分学
  20. 优思学院:一图看清六西格玛5大阶段12个步骤

热门文章

  1. 在 B 站学编程,真滴牛逼!
  2. Corel VideoStudio Ultimate 会声会影2022
  3. 金山安全卫士软件开源了!
  4. 「解析」牛客网-华为机考企业真题 41-60
  5. ThreadPoolExecutor源码解析
  6. 有关树莓派驱动1.3寸IPS屏幕的一点经验
  7. Java 编程思想源代码导入eclipse使用流程
  8. 帮忙设计一个数字电子时钟的课程设计
  9. 校园网网络未识别或网络连接正常,但无法认证客户端
  10. 大地测量学—投影变形(高程归化改正+高斯投影改正)