У меня есть следующий код, который я использую для публикации файла в службе, и он отлично работает. Единственная проблема, с которой я столкнулся, заключается в том, что мне нужно написать временный файл, чтобы получить файл FileSystemResource для размещения объекта с помощью restTemplateSpring Rest - Проводка файлов
Есть ли в любом случае я могу адаптировать следующий код, чтобы мне не пришлось писать временный файл ?
public String postNewIcon2(Integer fileId, MultipartFile multiPartfile) {
LOG.info("Entered postNewIcon");
Map<String, Object> params = getParamsWithAppKey();
params.put("fileId", fileId);
String result = null;
File tempFile = null;
try {
String originalFileNameAndExtension = multiPartfile.getOriginalFilename();
String tempFileName = "c:\\temp\\image";
String tempFileExtensionPlusDot = ".png";
tempFile = File.createTempFile(tempFileName, tempFileExtensionPlusDot);
multiPartfile.transferTo(tempFile);
FileSystemResource fileSystemResource = new FileSystemResource(tempFile);
// URL Parameters
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("file", fileSystemResource);
// Post
result = restTemplate.postForObject(getFullURLAppKey(URL_POST_NEW_ICON), parts, String.class, params);
} catch (RestClientException restClientException) {
System.out.println(restClientException);
} catch (IOException ioException) {
System.out.println(ioException);
} finally {
if (tempFile != null) {
boolean deleteTempFileResult = tempFile.delete();
LOG.info("deleteTempFileResult: {}", deleteTempFileResult);
}
}
return result;
}
Спасибо
Я» m не уверен, что это сработает, но вы можете попытаться использовать 'ByteArrayResource' и опубликовать его вместо' FileSystemResource'. 'ByteArrayResource r = new ByteArrayResource (multiPartfile.getBytes())' –
Спасибо Kresimir - это сработало с небольшой помощью по этой ссылке: http://stackoverflow.com/questions/4118670/sending-multipart-file-as- пост-параметры-с-resttemplate-запросов –