【问题标题】:How would you Http-Post a MultipartFile?你将如何 Http-Post 一个 MultipartFile?
【发布时间】:2021-08-04 19:17:59
【问题描述】:

我正在尝试使用 Java/Spring-boot/Vaadin 构建文件上传器。

https://vaadin.com/components/vaadin-upload/java-examples

那个 Uploader 给了我一个 MemoryBuffer。如何将其发布到我的后端,如下所示:


@RestController
@RequestMapping("files")
public class FilesController {
...
    @PostMapping
    public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) {
        try {
            fileService.save(file);
            return ResponseEntity.status(HttpStatus.OK)
                    .body(String.format("File uploaded successfully: %s", file.getOriginalFilename()));
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .body(String.format("Could not upload the file: %s!", file.getOriginalFilename()));
        }
    }
...

我尝试了类似的方法:

        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httppost = new HttpPost("http://localhost:9091/upload/files");

        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();

但我不知道如何添加请求的 MultipartFiles。谢谢你:)

【问题讨论】:

    标签: java http file-upload vaadin multipartfile


    【解决方案1】:

    我没有测试过这段代码,所以它可能有效,也可能无效。它基于Baeldung articleFileData JavaDoc。

    FileData fileData = memoryBuffer.getFileData();
    
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();         
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    builder.addBinaryBody("blabla", fileData.getFile(), 
        ContentType.create(fileData.getMimeType()), 
        fileData.getFileName());
    HttpEntity entity = builder.build();
    httppost.setEntity(entity);
    

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多