使用Rest Services,Java和Angular JS将存储在Mysql数据库中的图像显示为Blob

贡萨雷斯

我正在构建一个使用AngularJS作为前端的Web应用程序。我正在使用Rest服务来调用后端,并在Jboss Wildfly中部署该应用程序。该应用程序连接到我有表产品的Mysql数据库。产品包含一个ID和一个存储为BLOB的图像。Product java实体如下:

@Entity
@Table(name = "PRODUCTS")
public class Product implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;

@Column(name = "IMAGE", nullable = false, insertable = true, updatable = true)
private Blob image;

@Column(name="PRICE",nullable=false, insertable=true,updatable=true)
private Long price;

GETTERS AND SETTERS......
}

然后是Rest Service的代码:

@Path("/products")
public class ProductsService extends CommonService{

private static final Logger log =  Logger.getLogger(ProductsService.class);


@EJB
private ProductsServiceHandler handler;

@GET
public Response getAllProducts(@Context Request request, @Context HttpHeaders httpHeaders)
{
    try
    {
        List<Product> products=handler.findAllProducts();
        return Response.ok(products).header(ALLOW_ORIGIN_HEADER, "*").build();
    }
    catch(Exception e){return Response.status(Status.INTERNAL_SERVER_ERROR).build();}
}

从数据库正确检索了产品,图像存储为Blob,但是当我尝试发送响应时,出现以下错误:

原因:com.fasterxml.jackson.databind.JsonMappingException:没有为类java找到序列化程序。io.ByteArrayInputStream并且未发现创建BeanSerializer的属性(为避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过参考链:java.util.ArrayList [0]-> com.fgonzalez.domainmodel.Product [“ image”]-> $ Proxy70 [“ binaryStream”])

我猜是因为它不知道如何序列化Blob。我注意到,如果仅将图像作为InputStream发送,则不会抱怨(但现在我必须弄清楚如何在HTML中显示它)。关于如何实现我所需要的任何想法?

提前非常感谢哟!

灰色大胡子怪胎

您遇到的问题是Blob本质上是一个InputStream,而不是图像的字节-您必须读取InputStream才能获取图像字节。

如果您解决了这一问题,则可以通过base-64编码或其他方式传输二进制图像数据,但是在客户端,试图弄清楚如何显示它会遇到问题。

相反,如果可以的话,我将更改两件事:

  1. 仅在数据库中存储映像的名称,将实际映像存储在磁盘上。

  2. 在JSon响应中,仅发送图像的名称-然后在客户端上使用常规的HTML结构显示图像-让浏览器单独从服务器请求图像。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Java,AJAX和Rest Web Services将表单数据插入MySQL数据库

如何使用Java将长Blob(图像)上传到mysql数据库并在php中检索?

如何使用图像和其他html文本格式将php博客文章存储在mysql数据库中?

使用php显示通过mysql数据库保存为blob的图像(通过链接和新窗口)

使用 MySQL 工作台保存和显示数据库中的图像

使用 react js 从数据库中显示图像和视频

如何使用Java,AJAX使用Rest Web Services从MySQL数据库检索数据并将其放置在HTML表单中

如何使用Node JS和Express在MySQL数据库中存储PDF

每次我尝试使用 Swift 和 Alamofire 将数据发布到 MySQL 数据库时,数据显示为空?

使用Java JPA和Spring Data将结构化注释存储在MYSQL数据库中

如何使用 C# 和 SQL 将存储在数据库中的图像加载到图片框对象中

使用Hibernate从数据库中检索BLOB和使用JSP显示网页上

如何在MySQL数据库中存储和显示图像

使用包含'和'的数据,将其存储在WordPress数据库中并显示在meta框中

无法使用PHP,Mysql和Angular.js检查数据库中的重复数据

如何将图像文件夹路径存储到 MYSQL 数据库中并通过 PHP 和 XAMPP 在网页中显示图像?

使用Rest和Spring Boot将阿拉伯字符保存到数据库中

如何使用php将图像存储在mysql数据库中

图像插入数据库并显示使用php和mysql无法正常工作

使用Ajax和SQL,数据库中的图像未显示在HTML中

使用angularjs和spring boot将数据存储到数据库中的问题

使用php和mysql将数据从数据库显示到Array Multidimensi

将java对象存储为json字符串在MySQL数据库中吗?

如何将图像存储为将在前端 Vue.js 中使用的 laravel-8 中我的数据库中的链接?

如何使用React从数据库中删除数据,并击中使用php和mysql创建的rest API?

如何使用C#将日期以1和月份以1存储到mysql数据库

使用feedparser,MySQldb和python将rss提要图像插入mysql数据库

使用spring-mvc和hibernate将文件名存储在数据库中,而不是将文件本身存储在数据库中

使用Spring MVC和Hibernate Rest服务从数据库保存和检索图像