Axios和Jquery實現(xiàn)文件上傳功能
本文實例為大家分享了Axios和Jquery實現(xiàn)文件上傳的具體代碼,供大家參考,具體內(nèi)容如下
Jquery上傳
jquery文件時,后端好像并沒有經(jīng)過SpringMVC處理,沒有被封裝成一個MultiPartFIle對象,可通過原生的Servlet API request.getInputStream()獲取。至于為什么沒被SpringMVC封裝成MultipartFile對象目前還沒有研究透徹??赡苁钦埱髢?nèi)容類型沒有設(shè)置成 multipart/form-data。下面是jquery上傳文件的代碼示例,文件名,文件大小等參數(shù)可通過拼在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>
請上傳圖片:<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";
? ? }此時后臺打印的multipartfile是null。后續(xù)會深入研究·······…
Axios上傳
axios上傳不同于jquery,axios將上傳的二進制數(shù)據(jù)和其他參數(shù)封裝在了FormData對象中,值得注意的是,此時的內(nè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>
請上傳圖片:<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";
? ? }感覺還是更喜歡axios這種,明確指定了內(nèi)容類型并且經(jīng)過了SpringMVC處理。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用BootStrap和Metroui設(shè)計的metro風格微網(wǎng)站或手機app界面
今天使用bootstrap和metroui設(shè)計了一個metro風格的移動app或者微信微網(wǎng)站的界面,非常不錯具有參考借鑒價值,感興趣的朋友可以參考下2016-10-10
jQuery插件HighCharts實現(xiàn)的2D堆條狀圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts實現(xiàn)的2D堆條狀圖效果,結(jié)合完整實例形式分析了jQuery插件HighCharts繪制條狀圖的具體實現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03
jQuery實現(xiàn)控制文字內(nèi)容溢出用省略號(…)表示的方法
這篇文章主要介紹了jQuery實現(xiàn)控制文字內(nèi)容溢出用省略號(…)表示的方法,涉及jQuery針對字符串及樣式操作相關(guān)技巧,需要的朋友可以參考下2016-02-02
jQuery使用ajax_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了jQuery使用ajax的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

