【发布时间】:2019-11-17 06:39:13
【问题描述】:
我需要从服务器端代码向 POST 服务发送文件。 我需要发送的文件内容是字符串格式。 我不想在磁盘中创建文件。 如果不在磁盘中创建文件,我找不到发送文件的方法。
我更喜欢不创建 TEMP 文件,但这是我设法做到的。
如何在不保存到磁盘的情况下发送文件,甚至不保存为 TEMP 文件?
这是代码:
String fileContent = generateFile();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.add("apikey","myapikey");
File tmpFile = File.createTempFile("test", ".tmp");
FileWriter writer = new FileWriter(tmpFile);
writer.write(fileContent);
writer.close();
BufferedReader reader = new BufferedReader(new FileReader(tmpFile));
reader.close();
FileSystemResource fsr = new FileSystemResource(tmpFile);
MultiValueMap<String, Object> body
= new LinkedMultiValueMap<>();
body.add("file",fsr);
HttpEntity<MultiValueMap<String, Object>> requestEntity
= new HttpEntity<>(body, headers);
String serverUrl = "https://api.com/api";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate
.postForEntity(serverUrl, requestEntity, String.class);
return response.getBody();
我用来测试 API 的 POSTMAN 屏幕截图,它运行良好
【问题讨论】:
-
对于这种用例,我个人更喜欢使用
byte数据类型。并将其解析为服务器端和客户端的相关数据类型。 -
我不确定这如何回答我的问题
-
@user1913615 发送完文件后,要不要评论一下?
-
我的意思是如果你可以处理服务器端(发送 POST 请求的地方),将字节数组作为输入,然后将其转换为所需的数据类型。
-
@Avijit Barua,没有。
标签: spring post multipartform-data resttemplate