2015-11-03 60 views
6

我需要在我的Spring控制器中返回圖像。 我試着回答這個Spring MVC: How to return image in @ResponseBody?,但它不工作如何在Spring REST中將圖像返回給瀏覽器

我的代碼是這樣的

@RequestMapping(value = "cabang/photo", method = RequestMethod.GET) 
@ResponseBody 
public ResponseEntity<byte[]> getPhoto() throws IOException { 

    File imgPath = new File("D:\\test.jpg"); 

    byte[] image = Files.readAllBytes(imgPath.toPath()); 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.IMAGE_JPEG); 
    headers.setContentLength(image.length); 
    return new ResponseEntity<>(image, headers, HttpStatus.OK); 
} 

但是當我在瀏覽器中訪問它,它不會顯示任何東西(只是沒有圖片圖標)。但如果我讀取圖像字節數組,它不是空的。 我錯過了我的代碼中的任何東西嗎?

+0

打開瀏覽器的網絡控制檯,並檢查響應所包含。在這裏發佈。 –

+0

哦,貌似類型還是'文件'。但我把它設置在標題中,所以它應該返回圖像。也許我把它設置錯了? –

+0

您目前擁有的內容應正確設置內容類型標題。檢查你的處理程序方法是否正確調用。請注意,'@ ResponseBody'是不必要的,因爲你的返回類型是'ResponseEntity'。去掉它。 –

回答

1

您的代碼看起來沒問題。確保您已將ByteArrayHttpMessageConverter添加到應用程序的http消息轉換器列表中。

Java的配置:

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    ByteArrayHttpMessageConverter byteConverter = new ByteArrayHttpMessageConverter(); 
    converters.add(byteConverter); 
    super.configureMessageConverters(converters); 
} 
相關問題