Javascript 如何从后端检索图像和其他数据,并使用hibernate、SpringMVC和AngularJS显示在屏幕上?

Javascript 如何从后端检索图像和其他数据,并使用hibernate、SpringMVC和AngularJS显示在屏幕上?,javascript,java,angularjs,spring,hibernate,Javascript,Java,Angularjs,Spring,Hibernate,我正在为我的应用程序使用hibernate、html、spring mvc和angular js。在hibernate中,我正在构建视图模型,该模型将与前端html页面绑定。对于上传和保存,我没有问题。但是,当使用hibernate从DB检索相同的图像时,我只接收一个字节数组。如何在“tab.namepratch”中获取文件组件(请参阅下面的代码) 如何从byte[]获取与我上载的相同的文件 下面给出了字节数组组件映射到视图模型的java代码。我使用byte[]作为图像数据类型 谢谢你的帮助 提

我正在为我的应用程序使用hibernate、html、spring mvc和angular js。在hibernate中,我正在构建视图模型,该模型将与前端html页面绑定。对于上传和保存,我没有问题。但是,当使用hibernate从DB检索相同的图像时,我只接收一个字节数组。如何在“tab.namepratch”中获取文件组件(请参阅下面的代码)

如何从byte[]获取与我上载的相同的文件

下面给出了字节数组组件映射到视图模型的java代码。我使用byte[]作为图像数据类型

谢谢你的帮助

提前谢谢

Set<NamePageAttchModel> atchList = result.get(i).getNameAttachments();
        List<byte []> attbyArr = new ArrayList<byte[]>();
        for(NamePageAttchModel m : atchList){
            byte [] a = m.getAttachFile();
            attbyArr.add(a);
        }
        viewModel.setNamePRAttch(attbyArr);

{{file.name}

要访问图像,必须将其转换为b64格式,并为此创建一个实体,并将变量imagePath声明为
字符串
类型。让实体名称为
ImagePath
假设您从dao层获得一个列表,如
list=dao.getList
。应用for循环访问图像并将其转换为base64二进制,如:
String b64=javax.xml.bind.DatatypeConverter.printBase64Binary(m.getImage())
在for循环中实例化
ImagePath
实体,并将ImagePath设置为
ImagePath.setPath(b64)以及您希望随图像发送的所有其他属性。
现在将其添加到列表
attbyArr.add(a)
并将其添加到您的viewModel
viewModel.setNamePRAttch(attbyArr)

让ImageClass为:

那么ImagePath类应该是:

public class ImagePath {

private int id;
private String imagePath;
} //generate getter setter and parametriced constructor  
控制器类将具有:

List<ImageClass> list = dao.getList();
List<ImagePath> imageList = new ArrayList<ImagePath>();
for (ImageClass m : list) {
        String b64 = javax.xml.bind.DatatypeConverter.printBase64Binary(m.getImage());
        ImagePath imagepath = new ImagePath();
        imagepath.setId(m.getImage_id());
        imagepath.setImagePath(b64);
        imageList .add(imagepath);
        model.addAttribute("imageList", imageList); //Or you can return it as a list that can be used in Angular
List List=dao.getList();
List imageList=新建ArrayList();
对于(ImageClass m:列表){
字符串b64=javax.xml.bind.DatatypeConverter.printBase64Binary(m.getImage());
ImagePath ImagePath=新的ImagePath();
setId(m.getImage_id());
设置图像路径(b64);
添加(imagepath);
model.addAttribute(“imageList”,imageList);//或者您可以将其作为列表返回,以便在Angular中使用

若要下载二进制数据,请使用
responseType:'blob'
responseType:'arraybuffer'
。有关更多信息,请参阅。如果只有blob数据,我们可以使用响应类型:'blob'。但我还有其他几个字段也可以与blob数据一起检索。我没有提到这一部分。对不起,我个人选择包括JSON响应中的二进制数据是要使用的。有关将二进制文件发布到API,然后返回带有base64编码数据的JSON响应的示例,请参阅。请详细说明。我在序列化和所有方面都不是很强。请解释imagepath的内容。@VishalRajendran我已编辑了我的答案。检查这可能会有所帮助
List<ImageClass> list = dao.getList();
List<ImagePath> imageList = new ArrayList<ImagePath>();
for (ImageClass m : list) {
        String b64 = javax.xml.bind.DatatypeConverter.printBase64Binary(m.getImage());
        ImagePath imagepath = new ImagePath();
        imagepath.setId(m.getImage_id());
        imagepath.setImagePath(b64);
        imageList .add(imagepath);
        model.addAttribute("imageList", imageList); //Or you can return it as a list that can be used in Angular