8.9
luodangjia
2024-09-03 2855ae89d2ab6268e1edc42c3e9d7e73c8e7259e
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
package com.ruoyi.worker.entity;
 
import org.springframework.util.FileCopyUtils;
 
import org.springframework.web.multipart.MultipartFile;
 
import java.io.ByteArrayInputStream;
 
import java.io.File;
 
import java.io.IOException;
 
import java.io.InputStream;
 
/**
 
 * @author
 
 * file转MultipartFile的时候会用到MockMultipartFile
 
 * 当你导入spring-test依赖的时候 会跟某些依赖冲突(暂未找到具体是哪个冲突)
 
 * 解决方法 重写一个类去实现MultipartFile接口
 
 * 直接用MockMultipartFile的源码
 
 *
 
 */
 
public class MultipartFileDto implements MultipartFile {
 
    private final String name;
 
    private String originalFilename;
 
    private String contentType;
 
    private final byte[] content;
 
    /**
 
     * Create a new MultipartFileDto with the given content.
 
     * @param name the name of the file
 
     * @param content the content of the file
 
     */
 
    public MultipartFileDto(String name, byte[] content) {
 
        this(name, "", null, content);
 
    }
 
    /**
 
     * Create a new MultipartFileDto with the given content.
 
     * @param name the name of the file
 
     * @param contentStream the content of the file as stream
 
     * @throws IOException if reading from the stream failed
 
     */
 
    public MultipartFileDto(String name, InputStream contentStream) throws IOException {
 
        this(name, "", null, FileCopyUtils.copyToByteArray(contentStream));
 
    }
 
    /**
 
     * Create a new MultipartFileDto with the given content.
 
     * @param name the name of the file
 
     * @param originalFilename the original filename (as on the client's machine)
 
     * @param contentType the content type (if known)
 
     * @param content the content of the file
 
     */
 
    public MultipartFileDto(String name, String originalFilename, String contentType, byte[] content) {
 
        this.name = name;
 
        this.originalFilename = (originalFilename != null ? originalFilename : "");
 
        this.contentType = contentType;
 
        this.content = (content != null ? content : new byte[0]);
 
    }
 
    /**
 
     * Create a new MultipartFileDto with the given content.
 
     * @param name the name of the file
 
     * @param originalFilename the original filename (as on the client's machine)
 
     * @param contentType the content type (if known)
 
     * @param contentStream the content of the file as stream
 
     * @throws IOException if reading from the stream failed
 
     */
 
    public MultipartFileDto(String name, String originalFilename, String contentType, InputStream contentStream)
 
            throws IOException {
 
        this(name, originalFilename, contentType, FileCopyUtils.copyToByteArray(contentStream));
 
    }
 
    @Override
 
    public String getName() {
 
        return this.name;
 
    }
 
    @Override
 
    public String getOriginalFilename() {
 
        return this.originalFilename;
 
    }
 
    @Override
 
    public String getContentType() {
 
        return this.contentType;
 
    }
 
    @Override
 
    public boolean isEmpty() {
 
        return (this.content.length == 0);
 
    }
 
    @Override
 
    public long getSize() {
 
        return this.content.length;
 
    }
 
    @Override
 
    public byte[] getBytes() throws IOException {
 
        return this.content;
 
    }
 
    @Override
 
    public InputStream getInputStream() throws IOException {
 
        return new ByteArrayInputStream(this.content);
 
    }
 
    @Override
 
    public void transferTo(File dest) throws IOException, IllegalStateException {
 
        FileCopyUtils.copy(this.content, dest);
 
    }
 
}