Spring boot實(shí)現(xiàn)上傳文件到本地服務(wù)器
本文實(shí)例為大家分享了Spring boot實(shí)現(xiàn)上傳文件到本地服務(wù)器的具體代碼,供大家參考,具體內(nèi)容如下
引入配置
UploadFileConfig類
@Configuration
public class UploadFileConfig {
? ? ? ?@Value("${file.uploadFolder}")
? ? ? ? private String uploadFolder;
?
? ? ? ? @Bean
? ? ? ? MultipartConfigElement multipartConfigElement() {
? ? ? ? ? ? MultipartConfigFactory factory = new MultipartConfigFactory();
? ? ? ? ? ? factory.setLocation(uploadFolder);
? ? ? ? ? ? //文件最大
? ? ? ? ? ? factory.setMaxFileSize("20MB");
? ? ? ? ? ? return factory.createMultipartConfig();
? ? ? ? }
}UploadFilePathConfig類
@Configuration
public class UploadFilePathConfig extends WebMvcConfigurerAdapter {
? ? @Value("${file.staticAccessPath}")
? ? private String staticAccessPath;
? ? @Value("${file.uploadFolder}")
? ? private String uploadFolder;
? ? @Override
? ? public void addResourceHandlers(ResourceHandlerRegistry registry) {
? ? ? ? registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
? ? }
}在application.properties加上傳的配置項(xiàng)
#文件服務(wù)本地rest請(qǐng)求對(duì)外地址 file.staticAccessPath=/upload/** #文件上傳目錄(注意Linux和Windows上目錄結(jié)構(gòu)不同)需要改成你自己的實(shí)際目錄 file.uploadFolder=/Users/leichunhong/Documents/hlp/zx/ #上傳文件本地域名 改寫成你后端服務(wù)的地址和端口 file.upload.nama=http://127.0.0.1:9090 #springBOOt上傳文件大小 # 單個(gè)文件的最大值 spring.servlet.multipart.max-file-size = 10MB # 上傳文件總的最大值 spring.servlet.multipart.max-request-size=100MB
編寫上傳controller
@RestController
@RequestMapping("/test")
public class UploadController {
?
? ? @Value("${file.uploadFolder}")
? ? private String uploadFolder;
?
? ? @Value("${file.staticAccessPath}")
? ? private String staticAccessPath;
?
? ? @Value("${file.upload.nama}")
? ? private String reurl;
?
? ? @RequestMapping(value = "/upload", method = {RequestMethod.POST, RequestMethod.GET})
? ? public List<String> upload(HttpServletRequest request) throws MultipartException {
? ? ? ? String path = "";
? ? ? ? List<String> ksfs = new ArrayList<>();
? ? ? ? //1 需傳imgUrl 其他值就是傳file文件上傳
? ? ? ? try {
? ? ? ? ? ? //將當(dāng)前上下文初始化給 ?CommonsMutipartResolver (多部分解析器)
? ? ? ? ? ? CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
? ? ? ? ? ? ? ? ? ? request.getSession().getServletContext());
?
? ? ? ? ? ? //檢查form中是否有enctype="multipart/form-data"
? ? ? ? ? ? if (multipartResolver.isMultipart(request)) {
? ? ? ? ? ? ? ? //將request變成多部分request
? ? ? ? ? ? ? ? MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
? ? ? ? ? ? ? ? //獲取multiRequest 中所有的文件名
? ? ? ? ? ? ? ? Iterator<String> iter = multiRequest.getFileNames();
?
? ? ? ? ? ? ? ? while (iter.hasNext()) {
? ? ? ? ? ? ? ? ? ? //多個(gè)文件上傳
? ? ? ? ? ? ? ? ? ? List<MultipartFile> fileList = multiRequest.getFiles(iter.next());
? ? ? ? ? ? ? ? ? ? for (MultipartFile multipartFile : fileList) {
? ? ? ? ? ? ? ? ? ? ? ? String realPath = uploadFolder;
? ? ? ? ? ? ? ? ? ? ? ? String trueFileName = System.currentTimeMillis() + "." + FilenameUtils.getExtension(multipartFile.getOriginalFilename());
? ? ? ? ? ? ? ? ? ? ? ? // 設(shè)置存放圖片文件的路徑
? ? ? ? ? ? ? ? ? ? ? ? path = realPath + trueFileName;
? ? ? ? ? ? ? ? ? ? ? ? File file = new File(path);
? ? ? ? ? ? ? ? ? ? ? ? multipartFile.transferTo(file);
? ? ? ? ? ? ? ? ? ? ? ? path = reurl + "/upload/" + trueFileName;
? ? ? ? ? ? ? ? ? ? ? ? ksfs.add(path);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? //單個(gè)文件
? ? ? ? ? ? ? ? ? ? ? ?/* MultipartFile multipartFile=multiRequest.getFile(iter.next().toString());
? ? ? ? ? ? ? ? ? ? ? ? if (multipartFile != null) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? excelFile = File.createTempFile(prefix, ".jpg");
? ? ? ? ? ? ? ? ? ? ? ? ? ? multipartFile.transferTo(excelFile);
? ? ? ? ? ? ? ? ? ? ? ? ? ? path = KSFileSave.uploadFile(prefix, excelFile, "jpg");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ksfs.add(path);
? ? ? ? ? ? ? ? ? ? ? ?}*/
?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } finally {
? ? ? ? }
? ? ? ? return ksfs;
? ? }
?
}調(diào)用接口測(cè)試,用如下的html頁(yè)面
<form method="POST" enctype="multipart/form-data" action="http:127.0.0.1:9090/test/upload"> ? ? ? ? <table> ? ? ? ? ? ? <tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr> ? ? ? ? ? ? <tr><td></td><td><input type="submit" value="Upload" /></td></tr> ? ? ? ? </table> </form>

點(diǎn)擊選擇文件上傳驗(yàn)證返回結(jié)果

查看上傳目錄

點(diǎn)擊返回接口訪問(wèn)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java中CountDownLatch異步轉(zhuǎn)同步工具類
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著CountDownLatch異步轉(zhuǎn)同步工具類展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Java如何優(yōu)雅地避免空指針異常(NullPointerException)
這篇文章主要給大家介紹了關(guān)于Java如何優(yōu)雅地避免空指針異常(NullPointerException)的相關(guān)資料,空指針異常(NullPointerException)是一種常見(jiàn)的運(yùn)行時(shí)異常,它在Java編程中經(jīng)常出現(xiàn),需要的朋友可以參考下2024-03-03
SpringBoot項(xiàng)目中使用Mockito的示例代碼
這篇文章主要介紹了SpringBoot項(xiàng)目中使用Mockito的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
@PathVariable為空時(shí)指定默認(rèn)值的操作
這篇文章主要介紹了@PathVariable為空時(shí)指定默認(rèn)值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
Java 改造ayui表格組件實(shí)現(xiàn)多重排序
layui 的表格組件目前只支持單列排序,在實(shí)際應(yīng)用中并不能很好的支撐我們的業(yè)務(wù)需求。今天一時(shí)手癢,決定改造一番以支持多重排序。2021-04-04
SpringMVC中RequestParam注解的簡(jiǎn)單理解
@RequestMapping RequestMapping是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類或方法上,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中RequestParam注解的簡(jiǎn)單理解,需要的朋友可以參考下2022-03-03

