📄 commonsmultipartresolvertests.java
字号:
MockHttpServletRequest originalRequest = new MockHttpServletRequest(null, null, null);
MockHttpServletResponse response = new MockHttpServletResponse();
originalRequest.setContentType("multipart/form-data");
originalRequest.addHeader("Content-type", "multipart/form-data");
filter.doFilter(originalRequest, response, filterChain2);
CommonsMultipartFile file1 = (CommonsMultipartFile) files.get(0);
CommonsMultipartFile file2 = (CommonsMultipartFile) files.get(1);
assertTrue(((MockFileItem) file1.getFileItem()).deleted);
assertTrue(((MockFileItem) file2.getFileItem()).deleted);
}
public void testWithServletContextAndFilterWithCustomBeanName() throws ServletException, IOException {
StaticWebApplicationContext wac = new StaticWebApplicationContext();
wac.setServletContext(new MockServletContext());
wac.refresh();
wac.registerSingleton("myMultipartResolver", MockCommonsMultipartResolver.class, new MutablePropertyValues());
wac.getServletContext().setAttribute(WebUtils.TEMP_DIR_CONTEXT_ATTRIBUTE, new File("mytemp"));
wac.getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, wac);
CommonsMultipartResolver resolver = new CommonsMultipartResolver(wac.getServletContext());
assertTrue(resolver.getFileUpload().getRepositoryPath().endsWith("mytemp"));
MockFilterConfig filterConfig = new MockFilterConfig() {
public String getInitParameter(String s) {
if ("multipartResolverBeanName".equals(s))
return "myMultipartResolver";
else
return super.getInitParameter(s);
}
public Enumeration getInitParameterNames() {
return Collections.enumeration(Arrays.asList(new String[] {"multipartResolverBeanName"}));
}
};
filterConfig.setupGetServletContext(wac.getServletContext());
final List files = new ArrayList();
MockFilterChain filterChain = new MockFilterChain() {
public void doFilter(ServletRequest originalRequest, ServletResponse response) {
if (originalRequest instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest request = (MultipartHttpServletRequest) originalRequest;
files.addAll(request.getFileMap().values());
}
}
};
MultipartFilter filter = new MultipartFilter() {
private boolean invoked = false;
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
super.doFilterInternal(request, response, filterChain);
if (invoked) {
throw new ServletException("Should not have been invoked twice");
}
invoked = true;
}
};
filter.init(filterConfig);
MockHttpServletRequest originalRequest = new MockHttpServletRequest(null, null, null);
originalRequest.setContentType("multipart/form-data");
originalRequest.addHeader("Content-type", "multipart/form-data");
HttpServletResponse response = new MockHttpServletResponse();
filter.doFilter(originalRequest, response, filterChain);
filter.doFilter(originalRequest, response, filterChain);
CommonsMultipartFile file1 = (CommonsMultipartFile) files.get(0);
CommonsMultipartFile file2 = (CommonsMultipartFile) files.get(1);
assertTrue(((MockFileItem) file1.getFileItem()).deleted);
assertTrue(((MockFileItem) file2.getFileItem()).deleted);
}
public static class MockCommonsMultipartResolver extends CommonsMultipartResolver {
private boolean empty;
protected void setEmpty(boolean empty) {
this.empty = empty;
}
protected DiskFileUpload newFileUpload() {
return new DiskFileUpload() {
public List parseRequest(HttpServletRequest request) {
if (request instanceof MultipartHttpServletRequest) {
throw new IllegalStateException("Already a multipart request");
}
List fileItems = new ArrayList();
MockFileItem fileItem1 = new MockFileItem("field1", "type1",
empty ? "" : "field1.txt",
empty ? "" : "text1");
MockFileItem fileItem2 = new MockFileItem("field2", "type2",
empty ? "" : "C:/field2.txt",
empty ? "" : "text2");
MockFileItem fileItem3 = new MockFileItem("field3", null, null, "value3");
MockFileItem fileItem4 = new MockFileItem("field4", null, null, "value4");
MockFileItem fileItem5 = new MockFileItem("field4", null, null, "value5");
fileItems.add(fileItem1);
fileItems.add(fileItem2);
fileItems.add(fileItem3);
fileItems.add(fileItem4);
fileItems.add(fileItem5);
return fileItems;
}
};
}
}
private static class MockFileItem implements FileItem {
private String fieldName;
private String contentType;
private String name;
private String value;
private File writtenFile;
private boolean deleted;
public MockFileItem(String fieldName, String contentType, String name, String value) {
this.fieldName = fieldName;
this.contentType = contentType;
this.name = name;
this.value = value;
}
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(value.getBytes());
}
public String getContentType() {
return contentType;
}
public String getName() {
return name;
}
public boolean isInMemory() {
return true;
}
public long getSize() {
return value.length();
}
public byte[] get() {
return value.getBytes();
}
public String getString(String encoding) throws UnsupportedEncodingException {
return new String(get(), encoding);
}
public String getString() {
return value;
}
public void write(File file) throws Exception {
this.writtenFile = file;
}
public File getWrittenFile() {
return writtenFile;
}
public void delete() {
this.deleted = true;
}
public boolean isDeleted() {
return deleted;
}
public String getFieldName() {
return fieldName;
}
public void setFieldName(String s) {
this.fieldName = s;
}
public boolean isFormField() {
return (this.name == null);
}
public void setFormField(boolean b) {
throw new UnsupportedOperationException();
}
public OutputStream getOutputStream() throws IOException {
throw new UnsupportedOperationException();
}
}
public class MultipartTestBean1 {
private MultipartFile field1;
private byte[] field2;
public void setField1(MultipartFile field1) {
this.field1 = field1;
}
public MultipartFile getField1() {
return field1;
}
public void setField2(byte[] field2) {
this.field2 = field2;
}
public byte[] getField2() {
return field2;
}
}
public class MultipartTestBean2 {
private String field1;
private String field2;
public void setField1(String field1) {
this.field1 = field1;
}
public String getField1() {
return field1;
}
public void setField2(String field2) {
this.field2 = field2;
}
public String getField2() {
return field2;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -