当前位置: 首页 > 知识库问答 >
问题:

Vaadin上传图像并存储到数据库

胡博艺
2023-03-14

我正在使用一个Vaadin上传组件,到目前为止,我已经成功地将一个图像上传到一个目录,并在成功上传后在面板组件中显示它。在这之后,我想做的是把它也插入到数据库中。我有一个名为Show的表,它有一个名称、日期和图像。在Show类中,我尝试将图像作为字节数组或Blob。

Column(name="image")
private byte[] image;

@Lob
@Column(name="image")
private Blob image;

在上传成功的方法中,我想将文件转换为字节数组,到目前为止我已经尝试过了:

File file = new File("C:\\Users\\Cristina_PC\\Desktop\\" + event.getFilename());
byte[] bFile = new byte[(int) file.length()];
try {
    FileInputStream fileInputStream = new FileInputStream(file);
    fileInputStream.read(bFile);
    uIP.uploadImage(bFile);
    fileInputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}

我也试过:

byte[] data = Files.readAllBytes(new File("C:\\Users\\Cristina_PC\\Desktop\\" + event.getFilename()).toPath());
uIP.uploadImage(data);

uIP它实际上是我的上传ImagePresenter,我试图将字节数组转换为Blob,或者简单地将其作为字节数组传递给存储库

 public void uploadImage(byte[] data) throws SerialException, SQLException{
    //Blob blob = new javax.sql.rowset.serial.SerialBlob(data);
    showRepo.updateAfterImage(show, data);         // or (show, blob)
}

在我的存储库中,在updateAfterImage方法中,我有:

public void updateAfterImage(Show show, byte[] data)             //or Blob data
{
     em.getTransaction().begin();                       //em - EntityManager
     show.setImage(data);
     em.getTransaction().commit();
}

无论是Blob还是字节数组,我都无法通过设置其图像并在数据库中更新它来更新现有的节目(单元格仍然为空)。此外,我没有错误来帮助我找出哪里出了问题。任何帮助/建议都会很有用。谢谢

共有1个答案

骆昊阳
2023-03-14

我找到了解决办法。成功的原因是:

em.getTransaction().begin(); 
em.find(Show.class, show.getId()); 
show.setImage(data); 
em.merge(spectacol); 
em.getTransaction().commit();

在我的updateAfterImage方法中显示存储库。

 类似资料:
  • 如何从Android客户端上传图像到GAE(Google App Engine)数据存储? 尚未找到教程,已尝试了7天。

  • 问题内容: 我想将图像的下载URL放入Firebase数据库中。我可以将图像上传到存储中,但无法弄清楚如何将URL与其余的“帖子”一起放入数据库。 问题答案: 像这样组织您和func: 接下来,只需连接并保存到您的节点即可。 您也可以查看我有关上传数据并将URL保存到数据库的答案 希望能帮助到你

  • 我正在尝试上传图像到firebase,以及其他字符串和双数据类型。 我现在正在考虑两个选项,一个是上载imageUrl到firebase实时数据库,当我检索它时,我将检索一个imageUrl并将其转换为图像。 谢谢你的帮助!我很感激。

  • 我尝试用php建立一个上传图片系统。经过测试,系统回声“图像已上传”,但在数据库中没有显示。这是我的密码 upload.php get.php 我点击了提交按钮,没有选择任何文件,这2行警告显示出来 警告:file_get_contents():upload.php第14行中的文件名不能为空。 line14是这个$Image=addslash(file_get_contents($_FILES['

  • 问题内容: 我正在尝试上传图片以及添加细节,例如;标题,描述和文件路径到数据库表中。 我正在使用以下代码,但未将任何数据添加到数据库中; (session.php include包含数据库连接。) 表单代码; 我想知道是否有人可以告诉我可能出了什么问题? 谢谢你。 问题答案: 由于存在几个问题,此代码无法正常工作。 首先,您应在检查上传时重命名html字段之一或更改字段名称: 或者 第二,此脚本不

  • 我从Firebase存储中获取图像,用相机拍照,或者从图书馆中挑选一张。当其中一个完成时,我有一个类来存储,以便在需要时使用它。 现在我需要将此图像上传到Firebase存储(修改或新建,无所谓)。Firebase允许我使用以下选项之一:或,每个选项分别需要或。 我怎么能把我的,并从它获得一个或用于上传? -- 或者,为了解决这个问题,当我从Firebase存储中检索图像时,如何获取图像的? 无论