将图片以blob存入数据库
public String uploadfile() {
try {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
String path = request.getContextPath();
Blob photo = null;
String basePath = request.getScheme() + "://"+ request.getServerName() + path + "/";
String filename = getNum();
//判断是否为图片
if(isImage(myFile)){ // File类型
}else{
return ERROR;
}
filename += ".png";
Photolist pl = new Photolist();
FileInputStream fis = new FileInputStream(myFile);
photo = Hibernate.createBlob(fis); // org.hibernate.Hibernate
pl.setImagefile(photo);
pl.setAddtime(new Date());
pl.setName(filename);
service.save(pl);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public boolean isImage(File imageFile) {
if (!imageFile.exists()) {
return false;
}
Image img = null; // java.awt.Image
try {
img = ImageIO.read(imageFile); // javax.imageio.ImageIO
if (img == null || img.getWidth(null) <= 0 || img.getHeight(null) <= 0) {
return false;
}
return true;
} catch (Exception e) {
return false;
} finally {
img = null;
}
}
从数据库中读出blob
public String getImageFile() {
try {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
String pid = request.getParameter("pid");
ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
Photolist pl = new Photolist();
pl = (Photolist) service.get(Photolist.class, Long.parseLong(pid));
int len = 0;
Blob blob = pl.getImagefile(); //该字段类型为Blob
InputStream input = blob.getBinaryStream();
byte[] image = new byte[(int) blob.length()];
while ((len = input.read(image)) != -1) {
out.write(image, 0, len);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
页面上图片的显示:
<img width="70" height="70" src="/pay/private/izone/authentication/getImageFile.action?pid=1281970" />
相关推荐
利用VB存取数据库中BLOB数据,此文档仅提供了一种方法,仅供需要者参考(文档来源于网络,供大家参考学习使用)
Delphi 如何将二维数组数据 以Blob 存入数据库中 并读取 。先将二维数组转换维流文件,以内存流 Blob 形式存入到数据库中。 读取时以流获取 然后读出到数组中
JAVA中SQLlite数据库BLOB数据类型的存取.docx
Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf
关于在SQL Server数据库系统中存取BLOB数据的探讨.pdf
java中sqllite数据库blob数据类型的存取.docx
在C中存取Oracle数据库表中BLOB数据的方法研究.pdf
vc6读取数据库blob大二制对像,在ACCESS,mssql2005,mssql2008下对blob的存取操作,希望对大家有所帮助
在用Visual C++编写应用程序时,常会遇到如何存取数据库中大对象的问题。大对象文档以二进制数据形式保存在BLOB类型的字段中,这些大对象可能是Word、Execl或图片文件等,目前多数数据库都支持BLOB类型的字段。 VC...
VC++使用ADO实现BLOB二进制大对象数据的存取,本例子中以VC++读写Access数据库为例子,VS2013或者更高
这是一个C++的DEMO,看完你知道怎么读写大数据了,像把图片或者任意文件存取到数据中。
oracle 存读数据库的blob字段 .net有两种方式向Oracle的blob字段中存储图片:
VC 使用ADO技术存取BLOB二进制大数据,将大对象以二进制方式存储在数据库中,存取的方式与普通数据有所区别,里面包括有图像的存取,带个实例的工程比较完整。
Delphi将图片以二进制方式存储在数据库BLOB字段中,将使用TStream读写数据,利用BLOB字段进行图像数据的存取,Blob存变量,具体程序请参考useBlob目录中的代码。
基于.NET的Oracle BLOB数据高效存取方法.pdf
c#-操作数据库oracle的小代码,提供用于学习。代码主要实现从oracle读取、保存、上传图片等功能,使用了Oracle.DataAccess.dll,想了解相关知识的欢迎下载,有问题的请给我留言,谢谢。
当前的数据库系统不能提供对文件夹存取的直接支持。针对该问题,综合数据库二进制大对象(BLOB)技术、流技术和序列化技术, 提出一种数据库中文件夹的整体存储和随机访问方法。将文件夹打包成连续的文件数据块和目录...
此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...
此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...
在Oracle数据表中存取BLOB数据的方法研究.pdf