refactor: 优化文件地址逻辑 (#493)

* refactor: 优化文件地址逻辑
This commit is contained in:
老周 2024-04-07 15:01:18 +08:00 committed by GitHub
parent b61b0e3568
commit 16fee41d89
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 33 additions and 27 deletions

View File

@ -3,6 +3,7 @@ package org.jetlinks.community.io.file;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.io.FilenameUtils;
import org.jetlinks.community.io.utils.FileUtils;
import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
@ -42,48 +43,27 @@ public class FileInfo {
if (!apiBashPath.endsWith("/")) {
apiBashPath = apiBashPath + "/";
}
accessUrl = apiBashPath + "file/" + id + "?accessKey=" + accessKey().orElse("");
accessUrl = apiBashPath + "file/" + id + "." + extension + "?accessKey=" + accessKey().orElse("");
}
public MediaType mediaType() {
if (!StringUtils.hasText(extension)) {
return MediaType.APPLICATION_OCTET_STREAM;
}
switch (extension.toLowerCase()) {
case "jpg":
case "jpeg":
return MediaType.IMAGE_JPEG;
case "png":
return MediaType.IMAGE_PNG;
case "gif":
return MediaType.IMAGE_GIF;
case "mp4":
return MediaType.parseMediaType("video/mp4");
case "flv":
return MediaType.parseMediaType("video/x-flv");
case "text":
case "txt":
return MediaType.TEXT_PLAIN;
case "js":
return MediaType.APPLICATION_JSON;
default:
return MediaType.APPLICATION_OCTET_STREAM;
}
return FileUtils.getMediaTypeByExtension(extension);
}
public boolean hasOption(FileOption option){
if(options==null){
public boolean hasOption(FileOption option) {
if (options == null) {
return false;
}
for (FileOption fileOption : options) {
if(fileOption==option){
if (fileOption == option) {
return true;
}
}
return false;
}
public FileInfo withFileName(String fileName) {
name = fileName;
extension = FilenameUtils.getExtension(fileName);

View File

@ -48,6 +48,13 @@ public class FileUtils {
return getMediaTypeByExtension(FilenameUtils.getExtension(name));
}
/**
* 根据文件拓展名获取MediaType
*
* @param extension extension
* @return MediaType
*/
public static MediaType getMediaTypeByExtension(String extension) {
if (!StringUtils.hasText(extension)) {
return MediaType.APPLICATION_OCTET_STREAM;
@ -60,6 +67,13 @@ public class FileUtils {
return MediaType.IMAGE_PNG;
case "gif":
return MediaType.IMAGE_GIF;
case "svg":
return MediaType.parseMediaType("image/svg+xml");
case "tiff":
case "tif":
return MediaType.parseMediaType("image/tiff");
case "webp":
return MediaType.parseMediaType("image/webp");
case "mp4":
return MediaType.parseMediaType("video/mp4");
case "flv":
@ -67,8 +81,20 @@ public class FileUtils {
case "text":
case "txt":
return MediaType.TEXT_PLAIN;
case "html":
return MediaType.TEXT_HTML;
case "md":
return MediaType.TEXT_MARKDOWN;
case "css":
return MediaType.parseMediaType("text/css");
case "js":
return MediaType.parseMediaType("text/javascript");
case "xml":
return MediaType.TEXT_XML;
case "json":
return MediaType.APPLICATION_JSON;
case "pdf":
return MediaType.APPLICATION_PDF;
default:
return MediaType.APPLICATION_OCTET_STREAM;
}