我有以下 Controller :
@RequestMapping(value = "/uploadCert", method = RequestMethod.POST)
@ResponseBody
public String uploadCert( @RequestParam(value = "file", required = false) List<MultipartFile> files){
for (MultipartFile file : files) {
String path = "tempFolder";
File targetFile = new File(path);
try {
FileUtils.copyInputStreamToFile(file.getInputStream(), targetFile);
} catch (IOException e) {
e.printStackTrace();
}
}
return "done";
}
通过以下单元测试进行测试:
@Test
public void uploadCertFile() throws Exception {
//given
MockMultipartFile file = new MockMultipartFile("file", "test.txt", "text/plain", "bar".getBytes());
MockHttpServletRequestBuilder request = MockMvcRequestBuilders.fileUpload("/uploadCert").file(file);
System.out.println(request);
//when
ResultActions resultActions = mockMvc.perform(request);
//then
MvcResult mvcResult = resultActions.andReturn();
assertEquals(200, mvcResult.getResponse().getStatus());
File savedFile = new File("./test.txt");
assertTrue(savedFile.exists());
savedFile.delete();
}
它工作得很好,我有另一个java代码服务器,需要将文件上传到上面的 Controller 。我试图寻找在代码中使用的 MockMVCRequestMapping 的并行项,但找不到它,我应该使用什么来从 java 代码发送此 Web 请求?
最佳答案
你可以这样做:
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ResponseEntity<String> uploadDocument(MultipartHttpServletRequest request, HttpServletResponse response) throws IOException {
Iterator<String> iterator = request.getFileNames();
MultipartFile multipartFile = null;
while (iterator.hasNext()) {
multipartFile = request.getFile(iterator.next());
final String fileName = multipartFile.getOriginalFilename();
final String fileSize = String.valueOf(multipartFile.getSize());
//do rest here
}
}
关于java - 如何使用 post 方法将文件上传到 spring mvc RestController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161285/