图片转二进制存入oracle字段类型为Blob(取出二进制转图片并显示),图片带路径

1.带图片路径的图片上传至文件夹并转换为二进制存入oracle数据库字段为Blob类型(图片存入数据库方式,inputstream转blob)

jsp页面:


java控制类:

Blob photo = null;

String imageFilePath=request.getRealPath("/") + "\\temp\\"+ String.valueOf(loginUser.getUser().getId()) + "\\" + path;

//String imageFilePath= request.getRealPath("/") + File.separator + "temp" + File.separator+ String.valueOf(loginUser.getUser().getId()) + File.separator + path;

FileInputStream in = null;

try {
in = new FileInputStream(imageFilePath);
photo = Hibernate.createBlob(in);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != in) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}

2.从数据库取出二进制图片并显示(从数据库取出二进制转图片显示方式,只需输出到页面,blob转byte)

jsp页面:

java类:

byte[] image = (byte[]) request.getAttribute("image");
OperatorDetails loginUser = SpringSecurityUtils.getCurrentUser();
Blob blob = loginUser.getUser().getUserPic();
try {
if(null!=blob)
image = blob.getBytes(1, (int) (blob.length()));

if(null!=image){
ServletOutputStream sout = response.getOutputStream();
sout.write(image); // 将缓冲区的输入输出到页面
sout.flush(); // 输入完毕,清除缓冲
sout.close();
}
} catch (Exception e) {
e.printStackTrace();

}


3.图片转换成byte[]  字节流并存入oracle数据库(图片存入数据库方式,inputstream转byte)

User user = loginUser.getUser();
String path = request.getParameter("userImag");
byte[] bytes=null;
//Blob photo = null;
//String pathFilePath = request.getRealPath("/") + "\\temp\\"+ String.valueOf(loginUser.getUser().getId()) + "\\" + path;
String pathFilePath = request.getRealPath("/")+File.separator+"temp"+File.sepa
rator+user.getId();
FileInputStream in = null;
if (null != user.getId()) {
if (StringUtils.isNotBlank(path)) {
try {
in = new FileInputStream(pathFilePath);
ByteArrayOutputStream os = new ByteArrayOutputStream();

byte[] buff = new byte[100];
int rc = 0;
while ((rc=in.read(buff,0,100)) > 0) {
os.write(buff,0,rc);
}
bytes=os.toByteArray();
// photo =Hibernate.createBlob(in);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != in) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
//photo = jsecService.getUserByLoginName(user.getLoginName()).getUserPic();
}
user.setUserPic(bytes);
Md5PasswordEncoder md5 = new Md5PasswordEncoder();
md5.setEncodeHashAsBase64(false);
if (!request.getParameter("password") .equals("******")) {
user.setPassword(md5.encodePassword(
request.getParameter("password"), user.getLoginName()));
}
user.setUserBirthday(userBirthday);
user.setUserMobile(userMobile);
user.setUserPhone(userPhone);
jsecService.saveUser(user);
        

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值