我正在尝试将图像从数据库(保存为 BLOB)写入 jsp。 我正在使用 spring,在我的 Controller 中,我确实有图像 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 字符(如下所示)。
����K��_&��w:��=5��)^-����O?����R��?��z��i*\��*M��?��1��?. ?]?,��Z��?��I?��P??��?z��~?v��?k��?l��M�s������?E����.. ��Q��]��?����a?h����e��/?��;��k��]����W��?c��?E����.��Q��]� ??曲?~��-��?L��z?��Z�:?6??z��=��a?��+����e��'��5������?? ��?��?C����.��|��w��v?y��-��??U��?��?D����?g����j)?A?��? 7��$��????��?]??.����]S�?����bO��?L��e��zh��gzn��?。 ?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... ?������.��>W��[cֻKt��???������??)e?b��}M��?����g��?h��ѯA/?��J� ��e��(����3��?����
我什至尝试将 byte[] 转换为 ByteArrayOutputStream 并使用 Base64 对其进行编码,但没有成功
model.addAttribute("image", Base64.encode(imageBytes));
但是当我使用 FileOutputStream 将 byte[] 写入文件 (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();
}
然后在客户端使用html代码:
<img src="getImage/222" ... />
更新:是的,从 Spring 3.1 开始,您可以使用 @ResposneBody 注释
注册你的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>
然后使用你的 Controller :
@RequestMapping("/getPhoto/{id}")
public @ResponseBody byte[] getPhoto(@PathVariable("id") final String id) throws IOException {
byte[] imageBytes = dao.getImage(id);
return imageBytes;
}
关于java - 将图像从数据库写入jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14899591/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD