2026-06-30 24681c81c09022f584a57006f2534b5f74723414
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package cn.iocoder.yudao.module.infra.framework.file.core.local;
 
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.IdUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.module.infra.framework.file.core.client.local.LocalFileClient;
import cn.iocoder.yudao.module.infra.framework.file.core.client.local.LocalFileClientConfig;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
 
import java.io.File;
import java.nio.charset.StandardCharsets;
 
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
import static org.junit.jupiter.api.Assertions.*;
 
public class LocalFileClientTest {
 
    @TempDir
    public File tempDir;
 
    @Test
    public void testUpload_success() {
        // 准备参数
        LocalFileClient client = createClient();
        byte[] content = "test".getBytes(StandardCharsets.UTF_8);
        String path = "avatar/test.txt";
 
        // 调用
        String url = client.upload(content, path, "text/plain");
 
        // 断言
        assertEquals("http://127.0.0.1:48080/admin-api/infra/file/0/get/avatar/test.txt", url);
        assertArrayEquals(content, FileUtil.readBytes(new File(tempDir, path)));
        assertArrayEquals(content, client.getContent(path));
 
        // 删除
        client.delete(path);
        assertFalse(FileUtil.exist(new File(tempDir, path)));
    }
 
    @Test
    public void testUpload_encodeUrlPath() {
        // 准备参数
        LocalFileClient client = createClient();
        byte[] content = "test".getBytes(StandardCharsets.UTF_8);
        String path = "avatar/中文 100%+文件.txt";
 
        // 调用
        String url = client.upload(content, path, "text/plain");
 
        // 断言
        assertEquals("http://127.0.0.1:48080/admin-api/infra/file/0/get/avatar/%E4%B8%AD%E6%96%87%20100%25+%E6%96%87%E4%BB%B6.txt", url);
        assertArrayEquals(content, FileUtil.readBytes(new File(tempDir, path)));
    }
 
    @Test
    public void testUpload_pathInvalid() {
        // 准备参数
        LocalFileClient client = createClient();
        byte[] content = "test".getBytes(StandardCharsets.UTF_8);
 
        // 调用,并断言异常
        assertThrows(ServiceException.class, () -> client.upload(content, "../test.txt", "text/plain"));
        assertFalse(FileUtil.exist(new File(tempDir.getParentFile(), "test.txt")));
    }
 
    @Test
    @Disabled
    public void test() {
        // 创建客户端
        LocalFileClientConfig config = new LocalFileClientConfig();
        config.setDomain("http://127.0.0.1:48080");
        config.setBasePath("/Users/yunai/file_test");
        LocalFileClient client = new LocalFileClient(0L, config);
        client.init();
        // 上传文件
        String path = IdUtil.fastSimpleUUID() + ".jpg";
        byte[] content = ResourceUtil.readBytes("file/erweima.jpg");
        String fullPath = client.upload(content, path, "image/jpeg");
        System.out.println("访问地址:" + fullPath);
        client.delete(path);
    }
 
    @Test
    @Disabled
    public void testGetContent_notFound() {
        // 创建客户端
        LocalFileClientConfig config = new LocalFileClientConfig();
        config.setDomain("http://127.0.0.1:48080");
        config.setBasePath("/Users/yunai/file_test");
        LocalFileClient client = new LocalFileClient(0L, config);
        client.init();
        // 上传文件
        byte[] content = client.getContent(randomString());
        System.out.println();
    }
 
    private LocalFileClient createClient() {
        LocalFileClientConfig config = new LocalFileClientConfig();
        config.setDomain("http://127.0.0.1:48080");
        config.setBasePath(tempDir.getAbsolutePath());
        LocalFileClient client = new LocalFileClient(0L, config);
        client.init();
        return client;
    }
 
}