mi3*_*mi3 7 java jsp spring-mvc
我正在尝试将数据写入数据库中的jsp(保存为BLOB).我正在使用spring,在我的控制器中,我确实有图像byte [].
所以我这样做
byte[] imageBytes = dao.getImage(cc);
model.setAttribute("myimage", new String(imageBytes));
在我的jsp中,我有
<img src=data:image/jpg;base64,"<c:out value='${myimage}'/>" alt="my image" />
但我只在我的jsp页面中看到ascii charcaters(如下所示).
K_&W:???= 5)^ - Øř滋*\*M 1 ??] ?,Z?我?P 450ž〜v· K + LMS?如参见]一个?他/ ?; k]的W'C吗?如参见] ?? ?????曲〜 - LZ Z:6 ?? Z = A + E'5 ??? ?C. |?WVý - ?? U·Λd克ݭ)A 10 7 $ ????] ??] S 3 BO?Lezhgzn? ? ?E . ?. ] < eOO ?S ?? . ] ? '? ? ?E ? ` ] ֻD ??? \?} U}? > T m z h t U| E}?K > T | Q ] Vd ? Q? G E A ? ˰*wz i(sh? U^ b? z ~?v m Z i q ULF%LZ〜vozi;?!?&FVϨķüü?? VXXѯ? > W [çֻ的Kt ?????)在线2 b} M·G·hѯA/?济( 3?
我甚至尝试将byte []转换为ByteArrayOutputStream并使用Base64对其进行编码,但是没有工作
model.addAttribute("image", Base64.encode(imageBytes));
但是,当我写使用FileOutputStream中以一个文件(myimage.jpg)字节[],我看到用老式方法的图像显示在我的JSP
<img src="../images/myimage.jpg" .... />
不幸的是它不起作用.
您需要使用Spring MVC Controller方法,它将您的图像作为byte []写入您的HttpServletResponse类.
例:
@RequestMapping("/getImage/{id}")
public void getImage(HttpServletResponse response,@PathVariable("id") final String id) throws IOException {
response.setContentType("image/jpeg");
byte[] imageBytes = dao.getImage(id);
response.getOutputStream().write(imageBytes);
response.getOutputStream().flush();
}
Run Code Online (Sandbox Code Playgroud)
然后在客户端上使用html代码:
<img src="getImage/222" ... />
Run Code Online (Sandbox Code Playgroud)
更新:是的,你可以@ResposneBody从Spring 3.1开始使用注释
注册你的 ByteArrayHttpMessageConverter
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>image/jpeg</value>
<value>image/png</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
Run Code Online (Sandbox Code Playgroud)
然后使用你的控制器:
@RequestMapping("/getPhoto/{id}")
public @ResponseBody byte[] getPhoto(@PathVariable("id") final String id) throws IOException {
byte[] imageBytes = dao.getImage(id);
return imageBytes;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6222 次 |
| 最近记录: |