我的代码,上传30M以内没问题。
String strSql ="update tn set pm_name='" + fileName +"' , pm_direc= empty_blob() where pm_id=" +id ;
stmt.execute(strSql);
String sql ="select pm_direc from tn where pm_id="+id+" for update ";
ResultSet rs=stmt.executeQuery(sql);
if (rs !=null&& rs.next()){
oracle.sql.BLOB blob = ((oracle.jdbc.OracleResultSet)rs).getBLOB("pm_direc");
OutputStream outStream = blob.getBinaryOutputStream(); byte[] bytes = new byte[fileSize];
inStream.read(bytes);
outStream.write(bytes);
outStream.flush();
stmt.execute("commit");如果上传的还要大,可以把文件分解,在循环中读字节流,我是那样做的。40M的也传过,不过速度比较慢,要3分40秒。
http://expert.csdn.net/Expert/topic/1641/1641193.xml?temp=.784588
InputStream is=new FileInputStream(path2);//创建输入流,将外部文件输入到InputStream 中。
byte[] blobByte=new byte[is.available()];
is.read(blobByte);
is.close();
PreparedStatement pstmt=conn.prepareStatement("INSERT INTO test VALUES (?)");
pstmt.setBinaryStream(1,(new ByteArrayInputStream(blobByte)), blobByte.length);
pstmt.executeUpdate();//将文件流插入到数据库中。
pstmt.close();
*/