SpringBoot實(shí)現(xiàn)文件上傳服務(wù)器全過(guò)程
無(wú)需任何工具類,純手工實(shí)現(xiàn)SpringBoot上傳服務(wù)器。上傳文件之后自定義路徑并把修改文件名為 UUID ,避免文件名重復(fù)。
下面我詳細(xì)的把代碼給出,照著我的詳細(xì)流程,定能解決你的問(wèn)題。
1、引入swagger 和 lombok
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>2、創(chuàng)建上傳信息的實(shí)體類
@ApiModel(description = "處理后上傳文件的信息")
@Data
@NoArgsConstructor
public class UploadInfo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "上傳結(jié)果")
private String result;
@ApiModelProperty(value = "初始文件名")
private String beginFileName;
@ApiModelProperty(value = "最終上傳文件名")
private String lastFileName;
@ApiModelProperty(value = "文件類型")
private String FileType;
@ApiModelProperty(value = "文件大小")
private String fileSize;
@ApiModelProperty(value = "文件上傳的地址")
private String uploadUrl;
}3、在service層新建 UploadService
/**
* 上傳文件接口
*
* @param file 上傳的文件
* @param uploadFilePath 上傳到服務(wù)器的路徑
* @return 上傳并處理后的信息
* @throws Exception 上傳異常
*/
UploadInfo upload(MultipartFile file, String uploadFilePath) throws Exception;4、新建一個(gè)UploadServiceImpl
這是上面哪個(gè)Service的實(shí)現(xiàn)類。
@Service
public class UploadServiceImpl implements UploadService {
@Override
public UploadInfo upload(MultipartFile file, String uploadFilePath) throws Exception {
if (file.isEmpty())
return null;
UploadInfo uploadInfo = new UploadInfo();
String originalFilename;
String fileName;
originalFilename = file.getOriginalFilename();
fileName = UUID.randomUUID().toString() + file.getOriginalFilename();
String fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
long fileSize = file.getSize();
File packageFile = new File(uploadFilePath);
if (!packageFile.exists()) {
packageFile.mkdir();
}
File targetFile = new File(uploadFilePath + "/" + fileName);
file.transferTo(targetFile);
uploadInfo.setBeginFileName(originalFilename);
uploadInfo.setLastFileName(fileName);
uploadInfo.setFileType(fileType);
uploadInfo.setFileSize(Long.toString(fileSize));
uploadInfo.setUploadUrl(targetFile.toString());
uploadInfo.setResult("上傳成功");
return uploadInfo;
}
}5、新建Controller測(cè)試
@Autowired
private UploadService uploadService;
private final static String UPLOAD_PATH = "C:/file";
@ApiOperation(value = "上傳文件測(cè)試",notes = "請(qǐng)記得上傳時(shí)加上參數(shù) file !")
@PostMapping(value = "/uc/uploadFile",consumes= MediaType.MULTIPART_FORM_DATA_VALUE)
public UploadInfo uploadTest(@RequestParam("file") MultipartFile file){
UploadInfo uploadInfo = null;
try{
uploadInfo = uploadService.upload(file,UPLOAD_PATH);
}catch (Exception e){
System.out.println(e.toString());
}
return uploadInfo;
}PostMan測(cè)試結(jié)果:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot文件上傳的幾種常見方式(單文件上傳、多文件上傳)
- Springboot實(shí)現(xiàn)文件上傳至linux指定目錄
- 詳解SpringBoot中文件上傳大小限制問(wèn)題的解決方案
- Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟
- 基于SpringBoot框架實(shí)現(xiàn)文件上傳下載分享功能
- SpringBoot集成Knife4j報(bào)錯(cuò):文件上傳不顯示文件域問(wèn)題的解決方案
- SpringBoot實(shí)現(xiàn)文件上傳下載的7種方法
- Java springboot壓縮文件上傳,解壓,刪除壓縮包方式
- SpringBoot使用阿里oss實(shí)現(xiàn)文件上傳的流程步驟
相關(guān)文章
關(guān)于Nacos配置管理的統(tǒng)一配置管理、自動(dòng)刷新詳解
這篇文章主要介紹了關(guān)于Nacos配置管理的統(tǒng)一配置管理、自動(dòng)刷新詳解,Nacos是阿里的一個(gè)開源產(chǎn)品,是針對(duì)微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)、配置管理、服務(wù)治理的綜合型解決方案,需要的朋友可以參考下2023-05-05
Mybatis-plus常見的坑@TableField不生效問(wèn)題
這篇文章主要介紹了Mybatis-plus常見的坑@TableField不生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
SpringBoot整合DeepSeek實(shí)現(xiàn)AI對(duì)話功能
本文介紹了如何在SpringBoot項(xiàng)目中整合DeepSeek API和本地私有化部署DeepSeekR1模型,通過(guò)SpringAI框架簡(jiǎn)化了人工智能模型的集成,感興趣的小伙伴跟著小編一起來(lái)看看吧2025-02-02
jmeter設(shè)置全局變量與正則表達(dá)式提取器過(guò)程圖解
這篇文章主要介紹了jmeter設(shè)置全局變量與正則表達(dá)式提取器過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
java.imageIo給圖片添加水印的實(shí)現(xiàn)代碼
最近項(xiàng)目在做一個(gè)商城項(xiàng)目, 項(xiàng)目上的圖片要添加水印①,添加圖片水印;②:添加文字水印;一下提供下個(gè)方法,希望大家可以用得著2013-07-07
Java?map為什么不能遍歷的同時(shí)進(jìn)行增刪操作
這篇文章主要介紹了Java?map為什么不能遍歷的同時(shí)進(jìn)行增刪操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容實(shí)例解析
這篇文章主要介紹了Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容,是比較實(shí)用的功能,需要的朋友可以參考下2014-08-08
利用Java實(shí)現(xiàn)調(diào)用http請(qǐng)求
在實(shí)際開發(fā)過(guò)程中,我們經(jīng)常需要調(diào)用對(duì)方提供的接口或測(cè)試自己寫的接口是否合適。本文就為大家準(zhǔn)備了幾個(gè)java調(diào)用http請(qǐng)求的幾種常見方式,需要的可以參考一下2022-08-08
微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)
這篇文章主要介紹了 微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)的相關(guān)資料,需要的朋友可以參考下2017-03-03

