增加上传附件到oss

This commit is contained in:
wuweihua
2026-10-22 10:45:50 +08:00
parent 92000956fc
commit c064d925ca
6 changed files with 228 additions and 118 deletions
@@ -18,6 +18,7 @@ import com.bms.common.core.domain.AjaxResult;
import com.bms.common.utils.StringUtils;
import com.bms.common.utils.file.FileUploadUtils;
import com.bms.common.utils.file.FileUtils;
import com.bms.common.utils.file.OssStorage;
import com.bms.framework.config.ServerConfig;
/**
@@ -34,6 +35,9 @@ public class CommonController
@Autowired
private ServerConfig serverConfig;
@Autowired
private OssStorage ossStorage;
private static final String FILE_DELIMITER = ",";
/**
@@ -132,7 +136,7 @@ public class CommonController
}
/**
* 本地资源通用下载
* Common resource download: local profile path or oss://bucket/key (AR bill style).
*/
@GetMapping("/download/resource")
public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
@@ -140,15 +144,30 @@ public class CommonController
{
try
{
if (!FileUtils.checkAllowDownload(resource))
if (StringUtils.isEmpty(resource))
{
throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
throw new Exception("resource empty");
}
boolean ossFile = resource.startsWith("oss://");
if (!ossFile && !FileUtils.checkAllowDownload(resource))
{
throw new Exception(StringUtils.format("resource ({}) not allowed", resource));
}
if (ossFile)
{
// Extension check still applies to the object key suffix.
if (!FileUtils.checkAllowDownload(resource))
{
throw new Exception(StringUtils.format("resource ({}) not allowed", resource));
}
String downloadName = StringUtils.substringAfterLast(resource, "/");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
ossStorage.download(resource, response.getOutputStream());
return;
}
// 本地资源路径
String localPath = BmsConfig.getProfile();
// 数据库资源地址
String downloadPath = localPath + FileUtils.stripPrefix(resource);
// 下载名称
String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
@@ -156,7 +175,7 @@ public class CommonController
}
catch (Exception e)
{
log.error("下载文件失败", e);
log.error("download resource failed", e);
}
}
}