文件上傳本地服務器,並生成一個URL,可以通過這個url去訪問下載
-
上傳本地服務器
-
指定位置:
- application.yml:
file:
upload:
//是否開啟雲存儲
enabledYun: false
//上傳本地文件路徑
filePath: D:\document\uploadTemp
//配置本地服務器ip,公網ip
hostAddress: 127.0.0.1
- application.yml:
-
上傳文件
private String uploadFile(MultipartFile file) {
String fileDownloadUri = "";
// 獲取文件名
String fileName = file.getOriginalFilename();
// 新文件名
fileName = this.getName(fileName);
//創建文件
File dest = new File(fileSavePath + fileName);
//判斷文件父目錄是否存在
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs(); //這里因為創建的是多級目錄,所以需要使用mkdirs()方法。使用mkdir()方法則文件夾創建不成功,會報找不到路徑錯誤。
}
try {
//將文件內容寫入創建的文件中
file.transferTo(dest);
if (fileDownloadUri == "") {
fileDownloadUri = "upload/" + fileName;
} else {
fileDownloadUri = fileDownloadUri + "," + "upload/" + fileName;
}
} catch (IOException e) {
e.printStackTrace();
return "";
}
//返回Url地址,以逗號分隔
return fileDownloadUri;
}
/**
* 獲取文件擴展名
*
* @return string
*/
private String getFileExt(String fileName) {
return fileName.substring(fileName.lastIndexOf("."));
}
/**
* 依據原始文件名生成新文件名
* @return
*/
private String getName(String fileName) {
Random random = new Random();
return this.fileName = "" + random.nextInt(10000)
+ System.currentTimeMillis() + this.getFileExt(fileName);
}
- 新建一個類,讓這個類實現
WebMvcConfigurer
,進行映射配置
@Configuration
@EnableWebMvc
public class ConfigurerAdapter implements WebMvcConfigurer {
@Value("${file.upload.filePath}")
private String fileSavePath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String fileSavePathUri = "file:" + fileSavePath.replace("\\", "/");
registry.addResourceHandler("/upload/**").addResourceLocations(fileSavePathUri);
}
}