簡體   English   中英

Spring Controller無法通過RequestBody或RequestParam接收文件

[英]Spring Controller does not receive file through RequestBody or RequestParam

我正在嘗試上傳文件(任何類型),但是我在服務器端(Spring控制器)或客戶端(郵遞員)上做錯了。

控制器(嘗試兩種方法):

@RestController
@RequestMapping("/group")
public class GroupController {

    @PostMapping(value = "/test1", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String testUpload1(@RequestBody MultipartFile file) {

        return null;
    }

    @RequestMapping(value = "/test2", method = RequestMethod.POST)
    public String testUpload2(@RequestParam(name = "file", required = true) MultipartFile multipartFile) {

        return null;
    }
}

上傳者: 郵差

您可以嘗試使用以下代碼。

@PostMapping(value = "/test1", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = MediaType.TEXT_PLAIN_VALUE)
    public String testUpload1(@RequestParam("file") MultipartFile uploadedFile) {

      System.out.println("Uploaded File Name = " + uploadedFile.getOriginalFilename());
      File file = new File("E:/sure-delete/" + uploadedFile.getOriginalFilename());

    //Upload functionality
      try {
        uploadedFile.transferTo(file);
      } catch (IOException e) {
        e.printStackTrace();
      }
        return ResponseEntity.ok("File uploaded successfully ...");
    }

查找屏幕截圖 在此處輸入圖片說明

這個問題與Spring沒有MultipartResolver bean有關。 您的郵遞員設置看起來不錯。

如果沒有定義bean,則會出現以下錯誤:

[o.s.w.m.s.MissingServletRequestPartException: Required request part 'file' is not present]

您需要做的是用XML定義CommonsMultipartResolver bean:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- e.g.: 1 MB max upload size -->
    <property name="maxUploadSize" value="1048576"/>
</bean>

或在Java中執行:

@Bean
public MultipartResolver multipartResolver() {
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setMaxUploadSize(1048576);
    return resolver;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM