你先获取视频流,然后自己封装一把持久化到 blob

解决方案 »

  1.   

    参考下吧:import java.io.BufferedInputStream;   
    import java.io.FileInputStream;   
    import java.io.PrintStream;   
    import java.sql.Connection;   
    import java.sql.DriverManager;   
    import java.sql.ResultSet;   
    import java.sql.SQLException;   
    import java.sql.Statement;   
      
    public class Test {   
        private Connection conn;   
      
        /**  
         * 得到一个数据库的连接  
         *   
         * @return 返加Connection对象  
         */  
        public Connection getConnection() {   
            try {   
                Class.forName("oracle.jdbc.driver.OracleDriver");   
                conn = DriverManager.getConnection(   
                        "jdbc:oracle:thin:@localhost:1521:lyx", "scott", "tiger");   
            } catch (ClassNotFoundException e) {   
                // TODO Auto-generated catch block   
                e.printStackTrace();   
            } catch (SQLException e) {   
                // TODO Auto-generated catch block   
                e.printStackTrace();   
            }   
            return conn;   
        }   
      
        /**  
         * 向表中插入图片  
         *   
         * @param path图片所在的路径  
         * @return 整形 判断成功或失败  
         */  
        public int insertImage(String path) throws Exception {   
            int i = 0;   
            Statement st = null;   
            ResultSet rs = null;   
            conn=this.getConnection();   
               
            conn.setAutoCommit(false);//设置数据库为不自动提交,必须的一步   
            st = conn.createStatement();   
            //先插入一个空对象,这里我调用了Empty_BLOB()函数   
            i = st.executeUpdate("insert into image (id,image) values (seq1.nextval,Empty_BLOB())");   
            //以行的方式锁定   
            rs = st.executeQuery("select image from image where id=(select max(id) from image) for update");   
            if (rs.next()) {   
                //得到流   
                oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);   
                //从得到的低级流构造一个高级流   
                PrintStream ps = new PrintStream(blob.getBinaryOutputStream());   
                BufferedInputStream bis = new BufferedInputStream(   
                        new FileInputStream(path));   
                byte[] buff = new byte[1024];   
                int n = 0;   
                //从输入到输出   
                while ((n = bis.read(buff)) != -1) {   
                    ps.write(buff, 0, n);   
      
                }   
                //清空流的缓存   
                ps.flush();   
                //关闭流,注意一定要关   
                ps.close();   
                bis.close();   
            }   
            rs.close();   
            st.close();   
            conn.close();   
            return i;   
        }   
      
        public static void main(String[] args) throws Exception {   
            Test test=new Test();   
            test.insertImage("e:\\3.jpg");   
            System.out.println("OK");   
      
      
        }   
      
    }   
      

  2.   

    神经病  视频文件存放到blob字段中  上传1个1G的视频你传到啥时候去了?
    一般的做法是保存到ftp或者服务器本地