Java MultipartFile實(shí)現(xiàn)上傳文件/上傳圖片
1. 判斷允許上傳文件的 文件后綴/圖片后綴/相片后綴 和 其它工具類
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.Arrays;
import java.util.List;
@Component
public class FileUtil {
public static final List<String> IMAGE_EXTENSIONS = Arrays.asList(".jpg", ".jpeg", ".png");
}
import java.util.UUID;
public class CommonUtil {
public static String getUUID() {
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
return uuid;
}
}
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateUtil {
public static final String HH = "HH";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final DateTimeFormatter FORMATTER_HH = DateTimeFormatter.ofPattern(HH);
public static final DateTimeFormatter FORMATTER_YYYY_MM_DD = DateTimeFormatter.ofPattern(YYYY_MM_DD);
public static String getHH() {
return FORMATTER_HH.format(LocalDateTime.now());
}
public static String getYYYYMMDD() {
return FORMATTER_YYYY_MM_DD.format(LocalDateTime.now());
}
}
2. 上傳接口
@PostMapping("/updateImage.do")
public Map<String, String> updateImage(@RequestParam("image") MultipartFile[] multfiles) {
Map<String, String> result = new HashMap<>();
if (multfiles.length == 0) {
result.put("message", "請(qǐng)選擇圖片!");
return result;
}
// 源文件名稱
final String originalFileName = multfiles[0].getOriginalFilename();
if (StringUtils.isBlank(originalFileName)) {
result.put("message", "請(qǐng)選擇圖片!");
return result;
}
// 文件后綴[.jpg]
final String suffix = originalFileName.substring(originalFileName.lastIndexOf(".")).toLowerCase();
if (!FileUtil.IMAGE_EXTENSIONS.contains(suffix)) {
result.put("message", "圖片格式錯(cuò)誤!");
return result;
}
String lastFilePath;
String newFileName = CommonUtil.getUUID() + suffix;
String folderName = File.separator + "temp" + File.separator;
String relativePath = folderName + DateUtil.getYYYYMMDD() + File.separator + DateUtil.getHH();
String filePath = "D:\\file" + relativePath;
String fileUrl = null;
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = null;
try {
lastFilePath = filePath + File.separator + newFileName;
out = new FileOutputStream(lastFilePath);
out.write(multfiles[0].getBytes());
fileUrl = "http://127.0.0.1:9000" + relativePath + File.separator + newFileName;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (fileUrl == null) {
result.put("message", "圖片上傳失?。?);
return result;
}
result.put("message", "上傳成功!");
result.put("url", fileUrl);
return result;
}
3. 上傳成功
url => http://127.0.0.1:9000/temp/2019-09-12/14/0eac00b96f134652b34172e84febe8d1.jpg
以上就是Java MultipartFile實(shí)現(xiàn)上傳文件/上傳圖片的詳細(xì)內(nèi)容,更多關(guān)于Java MultipartFile上傳文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決Springboot2.1.x配置Activiti7單獨(dú)數(shù)據(jù)源問題
這篇文章主要介紹了Springboot2.1.x配置Activiti7單獨(dú)數(shù)據(jù)源問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
詳解SpringBoot程序啟動(dòng)時(shí)執(zhí)行初始化代碼
這篇文章主要介紹了詳解SpringBoot程序啟動(dòng)時(shí)執(zhí)行初始化代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
java面向?qū)ο?API(接口)與集合(ArrayList)
這篇文章主要介紹了Java語言面向?qū)ο蟮腁PI與集合,還是十分不錯(cuò)的,這里給大家分享下,需要的朋友可以參考,希望能夠給你帶來幫助2021-08-08
java實(shí)現(xiàn)雷霆戰(zhàn)機(jī)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)雷霆戰(zhàn)機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
JavaWeb驗(yàn)證碼校驗(yàn)功能代碼實(shí)例
這篇文章主要介紹了JavaWeb驗(yàn)證碼校驗(yàn)功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Java用?Gradle配置compile及implementation和api的區(qū)別
這篇文章主要介紹了Java用Gradle配置compile及implementation和api的區(qū)別,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
SpringMVC實(shí)現(xiàn)返回響應(yīng)的項(xiàng)目實(shí)踐
本文主要介紹了SpringMVC實(shí)現(xiàn)返回響應(yīng)的項(xiàng)目實(shí)踐,包含返回靜態(tài)頁面,返回?cái)?shù)據(jù),返回html片段等實(shí)例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02

