我需要从服务器端代码将文件发送到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屏幕截图
答案 0 :(得分:0)
改为使用ByteArrayResource:
String fileContent = generateFile();
ByteArrayResource bar = new ByteArrayResource(fileContent.getBytes());
这样,您将不必在磁盘上创建任何资源,而只需将其保留在内存中即可。