mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	update 优化 oss 下载使用临时文件避免线程冲突
This commit is contained in:
		@@ -34,7 +34,6 @@ import java.net.URI;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.nio.file.Files;
 | 
			
		||||
import java.nio.file.Path;
 | 
			
		||||
import java.nio.file.Paths;
 | 
			
		||||
import java.time.Duration;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -242,16 +241,13 @@ public class OssClient {
 | 
			
		||||
     * @throws OssException 如果下载失败,抛出自定义异常
 | 
			
		||||
     */
 | 
			
		||||
    public Path fileDownload(String path) {
 | 
			
		||||
        // 从路径中移除 URL 前缀
 | 
			
		||||
        String url = removeBaseUrl(path);
 | 
			
		||||
 | 
			
		||||
        // 构建临时文件路径 文件名必须是唯一不存在的,路径必须是存在的
 | 
			
		||||
        Path tempFilePath = Paths.get(extractFileName(url));
 | 
			
		||||
        // 构建临时文件
 | 
			
		||||
        Path tempFilePath = FileUtils.createTempFile().toPath();
 | 
			
		||||
        // 使用 S3TransferManager 下载文件
 | 
			
		||||
        FileDownload downloadFile = transferManager.downloadFile(
 | 
			
		||||
            x -> x.getObjectRequest(
 | 
			
		||||
                    y -> y.bucket(properties.getBucketName())
 | 
			
		||||
                        .key(url)
 | 
			
		||||
                        .key(removeBaseUrl(path))
 | 
			
		||||
                        .build())
 | 
			
		||||
                .addTransferListener(LoggingTransferListener.create())
 | 
			
		||||
                .destination(tempFilePath)
 | 
			
		||||
@@ -451,16 +447,6 @@ public class OssClient {
 | 
			
		||||
        return path.replace(getUrl() + StringUtils.SLASH, "");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 从文件路径中提取文件名
 | 
			
		||||
     *
 | 
			
		||||
     * @param path 文件路径
 | 
			
		||||
     * @return 提取的文件名或默认文件名
 | 
			
		||||
     */
 | 
			
		||||
    public String extractFileName(String path) {
 | 
			
		||||
        return FileUtils.getTmpDir() + StringUtils.SLASH + Paths.get(path).getFileName().toString();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 服务商
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user