jquery-file-upload demo
2014-08-18 22:23
162 查看
下载地址:http://plugins.jquery.com/blueimp-file-upload/文档地址:https://github.com/blueimp/jQuery-File-Upload/wiki本文只是一个demo,实现功能也很简单:点击一个上传按钮,用户选择图片,图片Ajax上传到后台存储到硬盘,返回一个连接,页面上显示用户上传的图片。(jquery-file-upload多文件上传可以做的非常漂亮,我这里有点大材小用了)注:demo页面为jsp,服务端为JavaspringMVC。页面代码:
注:acceptFileTypes,maxFileSize这两个属性是jquery-file-upload中jquery.fileupload-validate.js中的,需要在进入两个js文件:jquery.fileupload-validate.js和jquery.fileupload-process.js在通过注册上传后台之前的事件fileuploadprocessalways来获取错误信息,如果不知道data中是什么可以通过console.dir(data);在浏览器debug控制台中查看
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPEhtml> <htmlxmlns="http://www.w3.org/1999/html"> <head> <metacharset="UTF-8"> <title>fileuploaddemo</title> <linkrel="stylesheet"href="<c:urlvalue='/resource/themes/bootstrap/css/bootstrap.min.css'/>"> <linkrel="stylesheet"href="<c:urlvalue='/resource/js/jQuery-File-Upload/css/jquery.fileupload.css'/>"> <scriptsrc="<c:urlvalue='/resource/js/jquery-1.9.1.min.js'/>"></script> <scriptsrc="<c:urlvalue='/resource/js/jQuery-File-Upload/js/vendor/jquery.ui.widget.js'/>"></script> <scriptsrc="<c:urlvalue='/resource/js/jQuery-File-Upload/js/jquery.iframe-transport.js'/>"></script> <scriptsrc="<c:urlvalue='/resource/js/jQuery-File-Upload/js/jquery.fileupload.js'/>"></script> <scriptsrc="<c:urlvalue='/resource/themes/bootstrap/js/bootstrap.min.js'/>"></script> <scripttype="text/javascript"> $(function(){ varurl="/portal/upload/uploadImg.do"; $('#fileupload').fileupload({ url:url, dataType:'text', done:function(e,data){ console.dir(data); $(".imgViewimg").attr('src','${contextPath}'+data.result); $("#progress").hide(); $(".imgView").show(); }, progressall:function(e,data){ console.dir(data); varprogress=parseInt(data.loaded/data.total*100,10); $('#progress.progress-bar').css( 'width', progress+'%' ); } }); }); </script> </head> <body> <spanclass="btnbtn-successfileinput-button"> <iclass="glyphiconglyphicon-plus"></i> <span>Selectfile.</span> <!--Thefileinputfieldusedastargetforthefileuploadwidget--> <inputid="fileupload"type="file"name="imgFile"/> </span> <br> <br> <!--Theglobalprogressbar--> <divid="progress"class="progress"> <divclass="progress-barprogress-bar-success"></div> </div> <divclass="imgView"hidden="hidden"> <imgsrc=""> </div> </body> </html>如果要自己写css那么只需以下四个js:jquery.min.js、jquery.ui.widget.js、jquery.iframe-transport.js、jquery.fileupload.js配置:对id为fileupload的fileinput进行fileupload实例化,url即为图片要上传到服务端的后台链接,也可以通过html5的属性data-url直接在input中给,input的name要给,或者通过配置paramName属性也是可以的。progressall是配置进度条的,done是上传到后台返回后的事件。Java代码:
importjava.io.IOException; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.bind.annotation.ResponseBody; importorg.springframework.web.multipart.MultipartFile; importcom.isoftstone.veco.common.base.controller.BaseController; importcom.isoftstone.veco.common.upload.FileUploadHandler; @RequestMapping("/upload") @Controller publicclassUploadControllerextendsBaseController { @RequestMapping("/uploadImg.do") public@ResponseBody StringuploadMaterialImg(@RequestParam("imgFile")MultipartFilemultipartFile) { Stringresp=null; if(multipartFile!=null) { try { byte[]file=multipartFile.getBytes(); Stringdir="/test"; StringimgId=FileUploadHandler.uploadImg(file,dir); resp=FileUploadHandler.UPLOAD_CONFIG.getImgVirtualDir()+"?"+FileUploadHandler.UPLOAD_CONFIG.getDownloadParamName()+"=" +imgId; }catch(IOExceptione) { e.printStackTrace(); } } returnresp; } }
try中间的上传逻辑就不详细写了,controller这里写的有点挫,应该返回一个json格式的,判断上传是否成功,给用户反馈的,不过我这里只是一个demo,哈哈 补充:增加对上传图片格式的验证,以及对图片大小的验证,配置如下
$('#fileupload').fileupload({ url:url, paramName:"imgFile", acceptFileTypes:/(\.|\/)(gif|jpe?g|png)$/i, maxFileSize:5000000,//5MB dataType:'text', done:function(e,data){ console.dir(data); $(".imgViewimg").attr('src','${contextPath}'+data.result); $("#progress").hide(); $(".imgView").show(); }, progressall:function(e,data){ console.dir(data); varprogress=parseInt(data.loaded/data.total*100,10); $('#progress.progress-bar').css( 'width', progress+'%' ); }, messages:{ acceptFileTypes:'图片类型不合法', maxFileSize:'图片大小超过限制' } }).on('fileuploadprocessalways',function(e,data){ varindex=data.index, file=data.files[index]; if(file.error){ alert(file.error); } });
注:acceptFileTypes,maxFileSize这两个属性是jquery-file-upload中jquery.fileupload-validate.js中的,需要在进入两个js文件:jquery.fileupload-validate.js和jquery.fileupload-process.js在通过注册上传后台之前的事件fileuploadprocessalways来获取错误信息,如果不知道data中是什么可以通过console.dir(data);在浏览器debug控制台中查看
相关文章推荐
- jquery upload file demo (C#)
- jquery upload file demo (C#)
- JQuery+AJAX file upload demo (Python+flask as web server)
- 在struts2中使用jQuery插件ajaxfileupload
- 9 Powerful jQuery File Upload Plugins
- jQuery Multiple File Upload Plugin
- jQuery Ajax File Upload(附源码)
- JQuery插件学习之--ajaxfileupload
- jQuery插件AjaxFileUpload
- ajaxFileUpload ajax上传文件!jquery插件
- php jquery之ajax上传文件 ajaxfileupload.js
- AjaxFileUpLoad 文件异步上传Demo(模仿官方网站,后台使用.net一般处理程序)
- 用Jakarta commons fileupload组件实现多文件上传(demo)
- Commons Fileupload+Servlet+JQuery实现文件上传进度条
- jQuery File Upload Plugin 出现uid is 503或者没有图片缩略图
- 在ASP.NET中实现多文件上传(三)---jQuery Multiple File Upload Plugin
- Jquery插件研究:Ajax File Upload
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- jquery multiple file upload plugin
- Struts2 +jquery+ajaxfileupload 实现无刷新上传图片