如何将调用Webservice返回的图片流存入oracle数据库字段Blob中
本人调用Webservice返回xml,其中图片是以流的字符形式,像FFD8FFE000104A46494600010101006000600000FFDB004300080606070...这样格式的,现在想把它存入oracle数据库中的blob字段中,下面是一段代码,但运行时出错了,请问该怎么做?其中photopic是要存入的图片字段,element.elementTextTrim("photo_pic")是从xml中读取的图片流。Element root = document.getRootElement();
if (!root.getName().equals("States")) {
for (Iterator i = root.elementIterator(); i.hasNext();) {
Element element = (Element) i.next();
TimePic timePic = new TimePic();
timePic.setId(element.elementTextTrim("id"));
timePic.setCoachId(element.elementTextTrim("coach_id"));
timePic.setStdtId(element.elementTextTrim("stdt_id"));
timePic.setCarId(element.elementTextTrim("car_id"));
timePic.setCoachIcno(element.elementTextTrim("coach_icno"));
timePic.setStdtIcno(element.elementTextTrim("stdt_icno"));
timePic.setCarPzh(element.elementTextTrim("car_pzh"));
// InputStream oInputStream=new FileInputStream();
timePic.setPhotoPic(Hibernate.createBlob(element.elementTextTrim("photo_pic").getBytes()));
timePic.setPhotoTime(StringToDate(element.elementTextTrim("photo_time"),"yyyy-MM-dd"));
timepicDao.save(timePic);
}
} --------------------编程问答-------------------- element.elementTextTrim("photo_pic")
独到的只是一个文件名而言,
如果你要写到数据库中,必须以二进制形式从网络中,读取文件到你的代码中,
,然后剩下的就是jdbc操作了... --------------------编程问答-------------------- element.elementTextTrim("photo_pic")读到的不是文件名,而是FFD8FFE000104A46494600010101006000600000FFDB004300080606070...这样的图片流,这个是调用webservice后通过解析xml后读到的,现在问题是怎么把他保存到数据库,图片流的保存与一般数据的保存不太一样,本人保存后就报错了。。。 --------------------编程问答--------------------
timePic.setPhotoPic(Hibernate.createBlob(element.elementTextTrim("photo_pic").getBytes()));Webservice的xml返回的本来就应该是字节类型的数据了吧,你为什么还要把它在转换为字节数组呢,而不是直接用byte数组接受 --------------------编程问答-------------------- 试试 Hibernate.createBlob(new StringBufferInputStream(element.elementTextTrim("photo_pic")));
再说应该有调用说明吧。不然,自己摸索会走易做图路,浪费时间。 --------------------编程问答-------------------- 不行啊,有没有人会?
补充:Java , Web 开发