文件上传本地服务器,并生成URL
文件上传本地服务器,并生成一个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);
}
}