今天就跟大家聊聊有關(guān)如何利用Html5實(shí)現(xiàn)文件異步上傳的功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元欒川做網(wǎng)站,已為上家服務(wù),為欒川各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
1 簡介
開發(fā)文件上傳功能從來不是一件愉快的事,異步上傳更是如此,使用過iframe和Flash的上傳方案,也都感覺十分的別扭。本文簡要簡紹利用Html5的FormData實(shí)現(xiàn)文件的異步上傳,還可以實(shí)現(xiàn)上傳進(jìn)度條和文件大小驗(yàn)證等。服務(wù)端使用springMVC的方案進(jìn)行處理。
2 Html代碼
3 JQuery上傳
$("#submit-btn").on('click', function() { $.ajax({ url:"/test/upload", type:"post", data:new FormData($("#myForm").get(0)), //十分重要,不能省略 cache: false, processData: false, contentType: false, success: function () { alert("上傳成功!"); } }); });
4 JQuery文件大小驗(yàn)證
文件大小的及相應(yīng)行為的控制,需根據(jù)需要自行處理,本方法只是示例方法。
$('#u_photo').on('change', function() { var file = this.files[0]; if (file.size > 1024*1000) { alert('文件最大1M!') } });
5 JQuery進(jìn)度條
在ajax方法中加入xhr即可控制上傳進(jìn)度,進(jìn)度條可以使用html5的progress也可使用其它的進(jìn)度條。顯示及隱藏進(jìn)度條需要自行處理,本方法只是簡單介紹了進(jìn)度條的基本控制。
xhr: function() { var myXhr = $.ajaxSettings.xhr(); if (myXhr.upload) { myXhr.upload.addEventListener('progress', function(e) { if (e.lengthComputable) { $('progress').attr({ value: e.loaded, max: e.total, }); } } , false); } return myXhr; }
6 springMVC服務(wù)端
6.1 maven依賴
commons-io commons-io 2.5 commons-fileupload commons-fileupload 1.3.2
6.2 servlet-context.xml
6.3 Controller
示例程序,并未給出文件驗(yàn)證,存儲(chǔ)及處理的相應(yīng)代碼。
@RequestMapping(value="/test/upload",method = RequestMethod.POST) @ResponseBody public String upload(@RequestParam("u_photo") MultipartFile u_photo) { System.out.println("u_photo="+u_photo.getSize()); return "ok"; }
7 兼容性
IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+
看完上述內(nèi)容,你們對(duì)如何利用Html5實(shí)現(xiàn)文件異步上傳的功能有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。