转载自:http://heisetoufa.iteye.com/blog/227243
关键字: 图片 上传 数据库
数据库是oracle,字段是blob,代码语言是java,上传的可以是图片也可以是其他大文件,显示在浏览器里和保存在硬盘上不写在这篇文章里,写在下篇里
Java代码 import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JFileChooser; import oracle.jdbc.driver.OracleConnection; public class Write { public static void main(String[] args) { try { Writewatdb = new Write(); watdb.sendToDb(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } Connection conn; Statement stmt; ResultSet rs; int bufferSize; public Write() throws SQLException, ClassNotFoundException { String connectString; Class.forName("oracle.jdbc.driver.OracleDriver"); connectString = "jdbc:oracle:thin:@192.168.1.134:1521:zhpt"; conn = (OracleConnection) DriverManager.getConnection(connectString, "dzjc","dzjc"); stmt = conn.createStatement(); } public void sendToDb() { int amount = 0; OutputStream out = null; BufferedInputStream in = null; JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { pathname = chooser.getSelectedFile().getAbsolutePath(); name = chooser.getSelectedFile().getName(); chooser = null; } else { System.out.println("没有找到文件!"); System.out.println("程序非正常结束..."); return; } try { conn.setAutoCommit(false); stmt.executeUpdate("insert into dzjc_img(img) values (empty_blob())"); rs = stmt.executeQuery("select img from dzjc_img for update"); if (rs.next()) { Blob blob = rs.getBlob("img"); out = ( (oracle.sql.BLOB) blob).getBinaryOutputStream(); bufferSize = ( (oracle.sql.BLOB) blob).getBufferSize(); in = new BufferedInputStream(new FileInputStream(pathname), bufferSize); byte[] b = new byte[bufferSize]; int count = in.read(b, 0, bufferSize); while (count != -1) { out.write(b, 0, count); amount += count; System.out.println("处理了" + amount + "字节."); count = in.read(b, 0, bufferSize); System.out.println("处理了" + amount + "字节,成功."); } out.close(); out = null; in.close(); in = null; conn.commit(); } } catch (Exception e) { e.printStackTrace(); try { conn.rollback(); } catch (Exception ignored) {} } finally { if (out!=null) try{out.close();} catch(Exception igored){} if (in!=null) try{in.close();} catch(Exception igored){} } } } import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JFileChooser; import oracle.jdbc.driver.OracleConnection; public class Write { public static void main(String[] args) { try { Writewatdb = new Write(); watdb.sendToDb(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } Connection conn; Statement stmt; ResultSet rs; int bufferSize; public Write() throws SQLException, ClassNotFoundException { String connectString; Class.forName("oracle.jdbc.driver.OracleDriver"); connectString = "jdbc:oracle:thin:@192.168.1.134:1521:zhpt"; conn = (OracleConnection) DriverManager.getConnection(connectString, "dzjc","dzjc"); stmt = conn.createStatement(); } public void sendToDb() { int amount = 0; OutputStream out = null; BufferedInputStream in = null; JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { pathname = chooser.getSelectedFile().getAbsolutePath(); name = chooser.getSelectedFile().getName(); chooser = null; } else { System.out.println("没有找到文件!"); System.out.println("程序非正常结束..."); return; } try { conn.setAutoCommit(false); stmt.executeUpdate("insert into dzjc_img(img) values (empty_blob())"); rs = stmt.executeQuery("select img from dzjc_img for update"); if (rs.next()) { Blob blob = rs.getBlob("img"); out = ( (oracle.sql.BLOB) blob).getBinaryOutputStream(); bufferSize = ( (oracle.sql.BLOB) blob).getBufferSize(); in = new BufferedInputStream(new FileInputStream(pathname), bufferSize); byte[] b = new byte[bufferSize]; int count = in.read(b, 0, bufferSize); while (count != -1) { out.write(b, 0, count); amount += count; System.out.println("处理了" + amount + "字节."); count = in.read(b, 0, bufferSize); System.out.println("处理了" + amount + "字节,成功."); } out.close(); out = null; in.close(); in = null; conn.commit(); } } catch (Exception e) { e.printStackTrace(); try { conn.rollback(); } catch (Exception ignored) {} } finally { if (out!=null) try{out.close();} catch(Exception igored){} if (in!=null) try{in.close();} catch(Exception igored){} } } }可直接运行
数据库就自己建吧,建个类型为blob型的就行了