如何不對 Java 中的影像擴展進行硬編碼?
switch(extension) {
case "zip" -> {
FileUtil.saveFile(multipartFile, historyFolder, FileType.ZIP, backupFilePath);
FileUtil.saveFile(multipartFile, target, FileType.ZIP, filePath);
}
case "jpg", "jpeg", "png", ".bmp", ".svg", "webp", "jfif", "pjpeg", "pjp", "apng", "avif" -> {
FileUtil.saveFile(multipartFile, historyFolder, FileType.IMAGE, backupFilePath);
FileUtil.saveFile(multipartFile, target, FileType.IMAGE, filePath);
}
default -> throw new GlobalCustomException(ErrorCode.ILLIGAL_FILE_TYPE);
}
以上是我的代碼。
在 case 陳述句中,我列出了硬編碼為 jpg、jpeg...的字串。
這段代碼不靈活,所以我相信一定有更好的方法。
如果您能給我一個我不知道的解決方案,我將不勝感激。
uj5u.com熱心網友回復:
作為一種可能的方式,您可以URLConnection.guessContentTypeFromName()像這樣使用。
String mimeType = java.net.URLConnection.guessContentTypeFromName("test." extension);
boolean isImage = mimeType != null && mimeType.startWith("image/")
您可以向$JAVA_HOME/jre/lib/content-types.properties檔案添加自定義擴展名。
另請參閱這些問題。
- 如何獲取檔案的媒體型別(MIME 型別)?
- 如何可靠地檢測檔案型別?
uj5u.com熱心網友回復:
也許您可以嘗試使用帶有擴展名的陣列并傳入 case 陳述句。將所有影像格式作為一個陣列元素,將 z??ip 格式作為另一個陣列元素。
這應該給出最接近的邏輯。 https://stackoverflow.com/a/46700392/20191548
試試看是否有效
uj5u.com熱心網友回復:
String extension = "";
int i = fileName.lastIndexOf('.');
if (i > 0) {
extension = fileName.substring(i 1);
}
extension=fileName.substring(0,i) "." extension;
FileUtil.saveFile(multipartFile, historyFolder, extension, backupFilePath);
FileUtil.saveFile(multipartFile, target, extension, filePath);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513988.html
上一篇:上傳檔案教程
