2014-09-13 71 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。我仍然很感激评论中的所有回复。

相关问题