@Test // SPR-13319 public void filenameRfc5987() throws Exception { String disposition = "form-data; name=\"file\"; filename*=\"UTF-8''foo-%c3%a4-%e2%82%ac.html\""; StandardMultipartHttpServletRequest request = requestWithPart("file", disposition, ""); MultipartFile multipartFile = request.getFile("file"); assertNotNull(multipartFile); assertEquals("foo-ä-€.html", multipartFile.getOriginalFilename()); }
@Test public void filename() throws Exception { String disposition = "form-data; name=\"file\"; filename=\"myFile.txt\""; StandardMultipartHttpServletRequest request = requestWithPart("file", disposition, ""); MultipartFile multipartFile = request.getFile("file"); assertNotNull(multipartFile); assertEquals("myFile.txt", multipartFile.getOriginalFilename()); }
@Test // SPR-15205 public void filenameRfc2047() throws Exception { String disposition = "form-data; name=\"file\"; filename=\"=?UTF-8?Q?Declara=C3=A7=C3=A3o.pdf?=\""; StandardMultipartHttpServletRequest request = requestWithPart("file", disposition, ""); MultipartFile multipartFile = request.getFile("file"); assertNotNull(multipartFile); assertEquals("Declaração.pdf", multipartFile.getOriginalFilename()); }
@Test public void multipartFileResource() throws IOException { String name = "file"; String disposition = "form-data; name=\"" + name + "\"; filename=\"myFile.txt\""; StandardMultipartHttpServletRequest request = requestWithPart(name, disposition, "myBody"); MultipartFile multipartFile = request.getFile(name); assertNotNull(multipartFile); MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); map.add(name, multipartFile.getResource()); MockHttpOutputMessage output = new MockHttpOutputMessage(); new FormHttpMessageConverter().write(map, null, output); assertThat(output.getBodyAsString(StandardCharsets.UTF_8), containsString( "Content-Disposition: form-data; name=\"file\"; filename=\"myFile.txt\"\r\n" + "Content-Type: text/plain\r\n" + "Content-Length: 6\r\n" + "\r\n" + "myBody\r\n")); }