国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Spring Boot整合web層實現過程詳解

瀏覽:11日期:2023-09-12 09:09:44

Spring Boot中對Spring MVC的文件上傳是一脈相傳的,我們雙擊shift去搜CommonsMultipartResolver這個類,它是文件上傳的一個實現類。我們先看一下源碼:

Spring Boot整合web層實現過程詳解

我們可以看到它是MultipartResolver的實現類,我們再Ctrl+H,就可以看到右側MultipartResolver的兩個實現類。第一個實現類在servlet3.0之后,什么都不用加,就可以直接使用。第二個實現類的兼容性要好一些,早期的servlet也可以使用,但需要自己額外的加依賴。那么在Spring Boot中,我們就可以直接使用第一個實現類去完成文件上傳。

只需要一個controller和一個靜態html文件,就可以,先看一下代碼

package com.zl.upload;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.UUID;import java.util.logging.SimpleFormatter;@RestControllerpublic class UploadController { SimpleDateFormat ss=new SimpleDateFormat('yyyy/MM/dd/'); @PostMapping('/upload') //HttpServletRequest request獲取緩存地址,一般這里使用圖片服務器 public String upload(MultipartFile multipartFile , HttpServletRequest request){ //圖片保存在項目的運行路徑下 String format = ss.format(new Date()); String realpath = request.getServletContext().getRealPath('img') + format; //創建保存的文件夾 File f = new File(realpath); if(!f.exists()){ f.mkdirs(); } //因為文件名可能會重復,所以要對文件名進行修改 String oldName = multipartFile.getOriginalFilename(); System.out.println(oldName); String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf('.')); //保存圖片 try { multipartFile.transferTo(new File(f,newName)); //獲取路徑,動態獲取,因為有可能是http,也有可能是HTTPS String path = request.getScheme() + '://' + request.getServerName() + ':' + request.getServerPort() + '/img' + format + newName; return path ; } catch (IOException e) { e.printStackTrace(); } return 'error'; }}

第一步,創建文件的存放地址,和路徑

第二步,修改文件名

第三步,保存文件(文件件,和文件名)

后端的處理就完了,我們看一下前臺如何處理

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>文件上傳</title></head><body><form action='/upload' method='post' enctype='multipart/form-data'> <input type='file' name='multipartFile'> <input type='submit' value='提交'></form></body></html>

前端處理很簡單,就是開啟文件上傳通道就可以了。

但是這種做法在前后端分離開發中很少使用,接下來我們看一下用ajax如何實現。

后端的不用變,前端的改成ajax的:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>ajax文件上傳</title> <script src='http://www.cgvv.com.cn/bcjs/jquery-3.4.1.min.js'></script></head><script> function uploads() { alert('ss'); var multipartFile=$('#file')[0].files[0]; alert(multipartFile); var formData=new FormData(); formData.append('multipartFile',multipartFile); $.ajax({ type:’post’, url:’/upload’, processData:false, contentType:false, data:formData, success:function (msg) {$('#result').html(msg); } } ) }</script><body><form enctype='multipart/form-data'><input type='file' id='file'><input type='button' value='上傳' onclick='uploads()'></form><div id='result'></div></body></html>

這個是單文件上傳,如果是多文件上傳,改如何處理呢?

后端處理

@PostMapping('/uploads') //HttpServletRequest request獲取緩存地址,一般這里使用圖片服務器 public String uploads(MultipartFile [] multipartFiles , HttpServletRequest request){ //圖片保存在項目的運行路徑下 String format = ss.format(new Date()); String realpath = request.getServletContext().getRealPath('img') + format; //創建保存的文件夾 File f = new File(realpath); if(!f.exists()){ f.mkdirs(); } //用for循環獲取每個文件 for (MultipartFile file: multipartFiles){ String oldName = file.getOriginalFilename(); String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf('.')); //保存圖片 try {file.transferTo(new File(f,newName));//獲取路徑,動態獲取,因為有可能是http,也有可能是HTTPSString path = request.getScheme() + '://' + request.getServerName() + ':' + request.getServerPort() + '/img' + format + newName;System.out.println(path); } catch (IOException e) {e.printStackTrace(); } } //因為文件名可能會重復,所以要對文件名進行修改 return 'success'; }

前端處理:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>文件上傳</title></head><body><form action='/uploads' method='post' enctype='multipart/form-data'> <input type='file' name='multipartFiles' multiple> <input type='submit' value='提交'></form></body></html>

就是把前端拿到的文件存在數組里,去遍歷每一個,和單文件的做法一致。以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 日本高清www片 | 日韩欧美在线视频一区二区 | 情侣自拍啪啪 | 国产亚洲精品高清在线 | 欧美一级视频 | 114毛片免费观看网站 | 亚洲片在线观看 | 国产草草影院ccyycom软件 | 日韩视频中文字幕 | 亲子乱子伦xxxxxinin | 欧美精品亚洲精品日韩专区 | 亚洲夜 | 九九视频免费精品视频免费 | 99久久这里只精品国产免费 | www.成人网 | 亚洲日本一区二区三区高清在线 | 免费人成年短视频在线观看免费网站 | 亚洲欧美在线观看视频 | 成年人网站免费视频 | 久色成人| 91大神在线精品视频一区 | 欧美一区二区三区在观看 | 国产成人精品综合久久久 | 国产精品三级a三级三级午夜 | 欧美一区欧美二区 | 国内精品久久久久久久久久影视 | 国产成人综合日韩精品无 | 亚洲欧美精品一区 | 久青草免费视频 | 手机看片久久高清国产日韩 | 国产在线一二三区 | 亚洲精品国产一区二区图片欧美 | 中文字幕在线免费观看 | 韩国一级片在线观看 | 国产在线视频一区 | 欧美激情久久久久久久大片 | 久草免费在线观看视频 | 深夜福利视频在线观看免费视频 | 黄色片日本人 | 色屁屁一区二区三区视频国产 | 毛片免费观看的视频 |