Axios和Jquery實(shí)現(xiàn)文件上傳功能
本文實(shí)例為大家分享了Axios和Jquery實(shí)現(xiàn)文件上傳的具體代碼,供大家參考,具體內(nèi)容如下
Jquery上傳
jquery文件時(shí),后端好像并沒(méi)有經(jīng)過(guò)SpringMVC處理,沒(méi)有被封裝成一個(gè)MultiPartFIle對(duì)象,可通過(guò)原生的Servlet API request.getInputStream()獲取。至于為什么沒(méi)被SpringMVC封裝成MultipartFile對(duì)象目前還沒(méi)有研究透徹。可能是請(qǐng)求內(nèi)容類(lèi)型沒(méi)有設(shè)置成 multipart/form-data。下面是jquery上傳文件的代碼示例,文件名,文件大小等參數(shù)可通過(guò)拼在url后面使用request.getParameter()獲取。
<!DOCTYPE html> <html lang="en"> <head> ? ? <meta charset="UTF-8"> ? ? <title>Title</title> </head> <script src="jquery.js"></script> <script src="axios.js"></script> <body> 請(qǐng)上傳圖片:<input type="file" name="file" id="file" onchange="fileChange(this)"> <br> <button onclick="jqueryUpload()">jquery提交</button> </body> <script> ? ? var file = undefined ? ? function fileChange(data){ ? ? ? ? file = data.files[0] ? ? } ? function jqueryUpload(){ ? ? $.ajax({ ? ? ? ? url:"/jqueryUpload?filename=test.jpg", ? ? ? ? type:"post", ? ? ? ? data:file, ? ? ? ? contentType:false, ? ? ? ? processData:false, ? ? ? ? success(res){ ? ? ? ? ? ? console.log('上傳結(jié)果' + res) ? ? ? ? } ? ? }) ? } </script> </html>
@PostMapping("jqueryUpload") ? ? public String jqueryUpload(HttpServletRequest request, MultipartFile file) throws Exception{ ? ? ? ? System.out.println(file); ? ? ? ? String fileDesc = "D:\\2022\\" + request.getParameter("filename"); ? ? ? ? FileOutputStream outputStream = new FileOutputStream(fileDesc); ? ? ? ? ServletInputStream inputStream = request.getInputStream(); ? ? ? ? byte[] bytes = new ?byte[1024]; ? ? ? ? int line = inputStream.read(bytes); ? ? ? ? while (line != -1){ ? ? ? ? ? ? outputStream.write(bytes,0,line); ? ? ? ? ? ? line = inputStream.read(bytes); ? ? ? ? } ? ? ? ? inputStream.close(); ? ? ? ? outputStream.close(); ? ? ? ? return "success"; ? ? }
此時(shí)后臺(tái)打印的multipartfile是null。后續(xù)會(huì)深入研究·······…
Axios上傳
axios上傳不同于jquery,axios將上傳的二進(jìn)制數(shù)據(jù)和其他參數(shù)封裝在了FormData對(duì)象中,值得注意的是,此時(shí)的內(nèi)容類(lèi)型要改為multipart/form-data。
<!DOCTYPE html> <html lang="en"> <head> ? ? <meta charset="UTF-8"> ? ? <title>Title</title> </head> <script src="jquery.js"></script> <script src="axios.js"></script> <body> 請(qǐng)上傳圖片:<input type="file" name="file" id="file" onchange="fileChange(this)"> <br> <button onclick="jqueryUpload()">jquery提交</button> <button onclick="axiosUpload()">axios提交</button> </body> <script> ? ? var file = undefined ? ? function fileChange(data){ ? ? ? ? file = data.files[0] ? ? } ? function axiosUpload(){ ? ? var formData = new FormData(); ? ? formData.append("file",file); ? ? formData.append("filename","myfile.jpg") ? ? axios.post("/axiosUpload",formData,{ ? ? ? ? headers:{ "Content-Type" : "multipart/form-data" } ? ? }).then(res => { ? ? ? ? console.log('上傳結(jié)果' + res) ? ? }) ? } </script> </html>
@PostMapping("axiosUpload") ? ? public String axiosUpload(HttpServletRequest request,MultipartFile file)throws Exception{ ? ? ? ? InputStream inputStream = file.getInputStream(); ? ? ? ? String fileDesc = "D:\\2022\\" + request.getParameter("filename"); ? ? ? ? FileOutputStream os = new FileOutputStream(fileDesc); ? ? ? ? byte[] bytes = new ?byte[1024]; ? ? ? ? int line = inputStream.read(bytes); ? ? ? ? while (line != -1){ ? ? ? ? ? ? os.write(bytes,0,line); ? ? ? ? ? ? line = inputStream.read(bytes); ? ? ? ? } ? ? ? ? inputStream.close(); ? ? ? ? os.close(); ? ? ? ? return "success"; ? ? }
感覺(jué)還是更喜歡axios這種,明確指定了內(nèi)容類(lèi)型并且經(jīng)過(guò)了SpringMVC處理。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue中element-ui使用axios上傳文件
- elementui+vue+axios實(shí)現(xiàn)文件上傳本地服務(wù)器
- Vue+Axios實(shí)現(xiàn)文件上傳自定義進(jìn)度條
- Axios+Spring?Boot實(shí)現(xiàn)文件上傳和下載
- JQuery上傳插件Uploadify使用詳解及錯(cuò)誤處理
- jQuery Ajax 上傳文件處理方式介紹(推薦)
- Jquery插件之多圖片異步上傳
- JQuery.uploadify 上傳文件插件的使用詳解 for ASP.NET
- Jquery ajaxsubmit上傳圖片實(shí)現(xiàn)代碼
- jQuery Ajax文件上傳(php)
相關(guān)文章
jQuery 循環(huán)遍歷改變a標(biāo)簽的href(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇jQuery 循環(huán)遍歷改變a標(biāo)簽的href(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07老生常談combobox和combotree模糊查詢(xún)
下面小編就為大家?guī)?lái)一篇老生常談combobox和combotree模糊查詢(xún)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04jQuery實(shí)現(xiàn)文本展開(kāi)收縮特效
在網(wǎng)頁(yè)上只有一個(gè)小區(qū)域,但是說(shuō)明性的文字又很長(zhǎng),下面這段腳本實(shí)現(xiàn)的是長(zhǎng)文字的部分顯示,有類(lèi)似需求的朋友可以參考下哈,希望對(duì)你有所幫助2015-06-06基于jquery實(shí)現(xiàn)狀態(tài)限定編輯的代碼
基于jquery實(shí)現(xiàn)狀態(tài)限定編輯的代碼,需要的朋友可以參考下2012-02-02jQuery實(shí)現(xiàn)圖片放大預(yù)覽實(shí)現(xiàn)原理及代碼
jQuery實(shí)現(xiàn)圖片放大原理很簡(jiǎn)單,就是將圖片顯示的尺寸變大后放在瀏覽器的一個(gè)指定位置,從而實(shí)現(xiàn)圖片的放大預(yù)覽,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-09-09jQuery實(shí)現(xiàn)QQ空間漢字轉(zhuǎn)拼音功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)QQ空間漢字轉(zhuǎn)拼音功能,結(jié)合具體實(shí)例形式分析了jQuery實(shí)現(xiàn)拼音與中文漢字的轉(zhuǎn)換操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07基于jquery的禁用右鍵、文本選擇功能、復(fù)制按鍵的實(shí)現(xiàn)代碼
有時(shí)候因?yàn)槟承┰颍枰褂脩?hù)的右鍵、文本選擇功能、復(fù)制按鍵等操作,那么就可以參考下面的代碼2013-08-08輕松學(xué)習(xí)jQuery插件EasyUI EasyUI實(shí)現(xiàn)拖動(dòng)基本操作
這篇文章主要幫大家輕松學(xué)習(xí)jQuery插件EasyUI,并利用EasyUI實(shí)現(xiàn)拖動(dòng)基本操作,文章并提供了一個(gè)學(xué)校課程表簡(jiǎn)單實(shí)例,感興趣的小伙伴們可以參考一下2015-11-11