2016-06-13 1 views
1

이미지를 내 REST 웹 서비스에 보내려고하는데 오류가 발생합니다. 바이트 배열을 저장하고 다른 형식의 파일을 보내려면 여러 가지 방법을 시도했지만 좋은 방법은 찾지 못했습니다.멀티 샷 파일을 REST API로 보낼 때 스프링 오류가 발생했습니다.

봄 서비스 코드 (매개 변수를 사용하여 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에 내 파일을 전송하고 저장 할 수있는 솔루션이 있습니까 그거야?

답변

0

MultiPartFile을 사용하여 파일을 처리하는 대신 파일을 Base64 문자열로 변환하고 @Lob을 사용하여 특수 효과를 사용하여 저장할 수 있습니다. FileReader 개체를 사용하여 REST 웹 서비스로 파일을 보내는 동안 파일을 읽을 수 있습니다.

+0

Ohhhh thanks man !! 당신은 내 날을 구했다;) –

+0

환영합니다 !! 언제든지. 너를 도와 줄 축하해. !! – Deepanjan

관련 문제