2014-09-13 41 views
2

我寫了一個簡單的SpringMVC應用程序和Paas主機。我在Mysql中創建了一個表格,一列是Blob。我可以通過Mysql管理員上傳文件。現在,我的服務器可以在瀏覽器中正確提供html文件或JavaScript文件。但是,當我在http://myserver.com/File/ad.jpg中提供JPG文件時,我的瀏覽器顯示一個小圖標,如果我保存它,Windows圖像軟件將顯示圖像已損壞。在Spring MVC控制器中從Blob提供圖像文件的正確方法是什麼?

下面是一些代碼:

@RequestMapping(value="/File/**", //{name:.+}", 
    method = RequestMethod.GET) 
public @ResponseBody void getContent(
// @PathVariable("name") String name, 
    HttpServletRequest request, 
    HttpServletResponse response) throws IOException { 
    String name = request.getPathInfo(); 
    .... 
    IOUtils.copy(blob.getBinaryStream(), out); 

我發現getServletContext()方法返回null,所以我沒能得到的contentType,所以我在MySQL保存的contentType作爲圖像/ JPEG格式的廣告.JPG。我將這種性格設置爲內聯。我還應該做些什麼來提供JPG格式?

+0

嘗試返回'byte []'。切勿直接從Spring MVC控制器寫入輸出流。 – chrylis 2014-09-13 19:59:36

+0

並且不要忘記設置正確的內容類型。 – Bart 2014-09-13 20:16:07

+0

@chrylis我將contentType設置爲image/jpeg,並使用write(blob.getBytes(0,length)),但是現在我爲ad.jpg獲得了一個空白頁 – Splash 2014-09-13 21:00:19

回答

1

我終於發現原來的代碼沒有錯。原來的Mysql管理員網頁錯誤地上傳了blob。我發現Paas有一個祕密的新管理頁面,並且可以使用二進制選項上傳正確的blob。我仍然很感激評論中的所有回覆。

相關問題