0

Mysql に blob として保存されているビデオ ファイルをダウンロードしようとしています。ファイルは正常にダウンロードされますが、破損していると思います。ダウンロードする形式は、ogg、webm、mp3 です。問題は、ffmpeg を使用してビデオを変換しようとすると、「処理中に無効なデータが見つかりました」と表示されることです。

次のコードを使用しています

    Blob image = null;
    Connection con = null;
    ResultSet rs = null;
     try{
     Class.forName("com.mysql.jdbc.Driver");
     con = MySqlConnect.getDBConnection();
     String sql = "select videos, filename from sun.videostore where  id ='"+fileID+"'";
     Statement stmt = con.createStatement();
     rs = stmt.executeQuery(sql);
     while (rs.next()) {
    String filename = rs.getString("filename");
    Blob video = rs.getBlob("videos");
    File file1 = new File("C:\\DowloadFile\\" + filename); 
    FileOutputStream foStream = new FileOutputStream(file1);
    if( video != null){ 
        int length = (int) video.length();
        InputStream is2 = video.getBinaryStream();
        int b = 0;
        while(b!=-1){
         b=is2.read();
         foStream.write(b);
        }

    }

    }           
  }catch(Exception e){
     System.out.println("Ecxeption in getting data from DB = "+e);
  }'
4

1 に答える 1

1

いいえ、アップロードしたファイルを確認しましたが、破損していません.... 別の方法で動画を DB にアップロードしようとしました。

File video = new File(filename);                                   
fis = new FileInputStream(video); 
ps.setBinaryStream(2, fis, (int) video.length());//preparedStatement 

上記の方法でファイルをアップロードすると、ダウンロード時に正しいファイルが取得されます。

于 2012-04-20T05:49:59.637 に答える