[英]Error sending MultipartFile to REST API using Spring Boot and Open feign
[英]Spring error when sending multipartfile to REST api
我正在嘗試將圖像發送到我的REST Web服務,但是我收到了一個錯誤。 我嘗試了很多不同的方法(保存字節數組,發送另一種類型的文件,...),但沒有找到好方法。
Spring服務代碼(用參數調用API):
public void uploadImage(String id, MultipartFile file) {
RestTemplate rt = new RestTemplate();
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("filename", "tt");
map.add("extension", "png");
map.add("file", file);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<LinkedMultiValueMap<String, Object>>(
map, headers);
ResponseEntity<String> result = rt.exchange(WebConstant.API_URL + "melt/" + id + "/image", HttpMethod.POST, requestEntity, String.class);
}
API代碼:
@RequestMapping(value="/{meltId}/image", method=RequestMethod.POST)
public @ResponseBody String uploadMeltImage(@PathVariable String meltId, @RequestParam String filename, @RequestParam String extension, @RequestParam("file") MultipartFile file){
System.out.println("check 1");
Melt knownMelt = meltRepo.findOne(meltId);
if (file != null && knownMelt != null && extension != null && filename != null) {
try {
String url = filename + "." + extension;
InputStream is = file.getInputStream();
// Prepare buffered image.
BufferedImage img = ImageIO.read(is);
// Create a byte array output stream.
ByteArrayOutputStream bao = new ByteArrayOutputStream();
// Write to output stream
ImageIO.write(img, extension, bao);
if (knownMelt.getImageUrl() != url){
knownMelt.setImageUrl(url);
meltRepo.save(knownMelt);
}
return "You successfully uploaded for melt" + meltId + "!";
} catch (Exception e) {
return "You failed to upload for melt" + meltId + " => " + e.getMessage();
}
} else {
return "You failed to upload for melt" + meltId + " because the file was empty.";
}
}
有沒有人有解決方案將我的文件發送到我的API,然后能夠保存它?
您可以使用@Lob在注釋的幫助下將文件轉換為Base64字符串並存儲,而不是使用MultiPartFile處理文件。 您可以使用FileReader對象在將文件發送到REST Web服務時讀取該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.