十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如果必须存储在数据库,转成clob,blob存。不过最好是搞个专门的文件存储服务器存储,数据库只存路径位置就好。
成都创新互联公司服务项目包括石首网站建设、石首网站制作、石首网页制作以及石首网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,石首网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到石首省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
直接用java读,然后存到oracle中比较好。
我现在用的代码:
try{
//BLOB java 代码
//获得数据库连接
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.131.75:1521:orcl","scott","tiger");
con.setAutoCommit(false);
Statement st = con.createStatement();
System.out.println("conn");
/*
//插入一个空对象
st.executeUpdate("insert into FJ_TAB values(3,1,'there',empty_blob())");
System.out.println("insert");
//用for update方式锁定数据行
ResultSet rs = st.executeQuery("select FI from FJ_TAB where fjid=3 for update");
System.out.println("获取得到更新列");
if (rs.next()) {
//得到java.sql.Blob对象,然后Cast为oracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
//到数据库的输出流
OutputStream outStream = blob.getBinaryOutputStream();
//这里用一个文件模拟输入流
File file = new File("c://1.doc");
InputStream fin = new FileInputStream(file);
//将输入流写到输出流
byte[] b = new byte[blob.getBufferSize()];
int len = 0;
while ( (len = fin.read(b)) != -1) {
outStream.write(b, 0, len);
//blob.putBytes(1,b);
}
//依次关闭(注意顺序)
fin.close();
outStream.flush();
outStream.close();
con.commit();
con.close();
}
*/
//不需要“for update”
ResultSet rs = st.executeQuery("select FI from FJ_TAB where FJID=3");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("FI");
InputStream inStream = blob.getBinaryStream();
//data是读出并需要返回的数据,类型是byte[]
int length = (int) blob.length();
byte[] data = new byte[length];
//data = new byte[inStream.available()];
inStream.read(data);
inStream.close();
FileOutputStream fo = new FileOutputStream("c://2.doc");//数据到的文件名
fo.write(data);
fo.close();
System.out.println("DATA="+data.toString());
}
con.commit();
con.close();
}catch(IOException io){
System.out.println("IOexception:"+io.toString());
}catch(SQLException sql){
System.out.println("SQLxception:"+sql.toString());
}catch(ClassNotFoundException ex){
System.out.println("ClassNotFoundException:"+ex.toString());
}
可以用blob或bfile类型来存储该类二进制数据。具体说明如下:
★ blob:用来存储可变长度的二进制数据,blob数据在数据库之间或在客户机与服务器进程之间传递时不经历字符集的转换。
★ bfile:在数据库外面存储可变长二进制数据,Bfile数据类型最多存储4GB的数据,在某些操作系统中甚至更少。