使用 Hibernate 将图像保存在数据库中
Posted
技术标签:
【中文标题】使用 Hibernate 将图像保存在数据库中【英文标题】:Saving image in database using Hibernate 【发布时间】:2016-03-17 02:05:13 【问题描述】:我想使用 Hibernate 将用户上传的图像存储在数据库中。但我不知道该怎么做。这是我的代码
JSP:
<form action="Image" method="post" enctype="multipart/form-data"> <br><br>
<table>
<tr>
<td>UserName: </td>
<td width='10px'></td>
<td><input type="text" name="unname"/></td>
</tr>
<tr>
<td>Upload: </td>
<td width='10px'></td>
<td><input type="file" name="filecover" value="Upload"/></td>
</tr>
<tr>
<td><input type="submit" value="Submit" name="usubmit"></td>
</tr>
</table>
</form>
道:
public void savePhoto1(String uname, Blob photo1)
Session session = NewHibernateUtil.getSessionFactory().openSession();
Transaction trans =null;
Newsfeed nf = new Newsfeed(); // Pojo Class
try
trans=session.beginTransaction();
nf.setUsername(uname);
nf.setPhoto1(photo1);
trans.commit();
catch (Exception e)
在 Servlet 中,
Part filePart = request.getPart("filecover");
在此之后我不知道如何使用 DAO savephoto1 方法添加它.. 谁能帮我继续.. 我需要将图像存储在 mysql blob 字段而不是路径中..
【问题讨论】:
【参考方案1】:在处理大文件(blob)时,通常将它们映射为字节数组:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
File file = new File("C:\test.png");
byte[] imageData = new byte[(int) file.length()];
try
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(imageData);
fileInputStream.close();
catch (Exception e)
e.printStackTrace();
ImageWrapper image = new ImageWrapper();
image.setImageName("test.jpeg");
image.setData(imageData);
session.save(image); //Save the data
session.getTransaction().commit();
HibernateUtil.shutdown();
你有一个完整的例子,包括阅读图片,在这里:http://howtodoinjava.com/2013/08/30/hibernate-example-of-insertselect-blob-from-database/
【讨论】:
我不是试图从路径中读取图像,而是从用户那里获取图像并尝试保存用户上传的图像以上是关于使用 Hibernate 将图像保存在数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用hibernate将图像存储到postgres数据库中