java - 如何使用 post 方法将文件上传到 spring mvc RestController

标签 java spring spring-mvc post spring-restcontroller

我有以下 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/

相关文章:

java - 发生 MaxUploadSizeExceededException 时如何关闭套接字?

java - 如何覆盖 jTable 中的默认单元格编辑器?

java - 如何将jar文件和dat文件转换为exe文件

java - 在 Hibernate 中只获取最后一条记录,但我想要所有记录

java - Spring Rest CRUD 保存外键

java - Spring mvc + jsp页面中的安全css和js

java - 使用 ReloadableResourceBundleMessageSource 在类路径上动态加载文件

java - 提取数组中的 Excel 单元格值

java - 如何仅将 Servlet 保留在我的站点上(某种身份验证)?

java - 使用 Mockito 或 jUnit 验证方法内的调用