java - 你将如何 Http-Post 一个 MultipartFile?
问题描述
我正在尝试使用 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。谢谢 :)
解决方案
I haven't tested this code, so it may or may not work. It's based on a Baeldung article and the FileData 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);
推荐阅读
- php - 找不到 CodeIgniter 数据表 ajax url。路由问题?
- vba - Outlook 邮件项多重限制方法
- docker - 通过 websockets 使用 traefik 进行 docker 内部流量
- .htaccess - htaccess html5 history api - 重定向到根文件夹仅适用于路由中没有哈希
- sql - 我无法从 ComboBox vb6 保存数据
- javascript - 有没有办法获取由 var、let、const 声明的变量的名称?
- c# - 我如何在可注入的辅助类和静态类之间做出决定?
- c# - 在 dotnet 函数中使用 HttpClient 时出错
- oracle - 如何创建与另一个数据库具有相同结构但没有数据的新 oracle 数据库?
- vue.js - 在 HTML 字符串中注入 Vue 组件