1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.mock.web.test;
18
19 import java.io.ByteArrayInputStream;
20 import java.io.File;
21 import java.io.IOException;
22 import java.io.InputStream;
23
24 import org.springframework.util.Assert;
25 import org.springframework.util.FileCopyUtils;
26 import org.springframework.web.multipart.MultipartFile;
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class MockMultipartFile implements MultipartFile {
41
42 private final String name;
43
44 private String originalFilename;
45
46 private String contentType;
47
48 private final byte[] content;
49
50
51
52
53
54
55
56 public MockMultipartFile(String name, byte[] content) {
57 this(name, "", null, content);
58 }
59
60
61
62
63
64
65
66 public MockMultipartFile(String name, InputStream contentStream) throws IOException {
67 this(name, "", null, FileCopyUtils.copyToByteArray(contentStream));
68 }
69
70
71
72
73
74
75
76
77 public MockMultipartFile(String name, String originalFilename, String contentType, byte[] content) {
78 Assert.hasLength(name, "Name must not be null");
79 this.name = name;
80 this.originalFilename = (originalFilename != null ? originalFilename : "");
81 this.contentType = contentType;
82 this.content = (content != null ? content : new byte[0]);
83 }
84
85
86
87
88
89
90
91
92
93 public MockMultipartFile(String name, String originalFilename, String contentType, InputStream contentStream)
94 throws IOException {
95
96 this(name, originalFilename, contentType, FileCopyUtils.copyToByteArray(contentStream));
97 }
98
99
100 @Override
101 public String getName() {
102 return this.name;
103 }
104
105 @Override
106 public String getOriginalFilename() {
107 return this.originalFilename;
108 }
109
110 @Override
111 public String getContentType() {
112 return this.contentType;
113 }
114
115 @Override
116 public boolean isEmpty() {
117 return (this.content.length == 0);
118 }
119
120 @Override
121 public long getSize() {
122 return this.content.length;
123 }
124
125 @Override
126 public byte[] getBytes() throws IOException {
127 return this.content;
128 }
129
130 @Override
131 public InputStream getInputStream() throws IOException {
132 return new ByteArrayInputStream(this.content);
133 }
134
135 @Override
136 public void transferTo(File dest) throws IOException, IllegalStateException {
137 FileCopyUtils.copy(this.content, dest);
138 }
139
140 }