Galera,
Eu não sei pq raios isso ta acontecendo mas ta acontecendo, é o seguinte :
Eu to tentando ler um arquivo qualquer e gravar ele em uma base de dados MySQL estou gravando em um campo tipo BLOB, gravar eu consigo, só que ai acontece a merda, eu só consigo gravar 64KB
Eu tento gravar arquivos com mais que 3MB e ele só grava 64KB !!!
Alguém tem alguma idéia do que pode estar acontecendo ???
[code]
Class.forName("com.mysql.jdbc.Driver");
// Cria uma Conexao a Base de Dados
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/teste");
// Prepara a Query para ser executada
PreparedStatement pstmt = con.prepareStatement("INSERT INTO arquivos (nomeArquivo, arquivo) VALUES (?,?)");
// Pega o Arquivo
File arquivo = new File("Pennywise - Alien.mp3");
InputStream arquivoInputStream = new FileInputStream(arquivo);
System.out.println(arquivo.length());
// Atualiza a query
pstmt.setString(1, arquivo.getName());
pstmt.setBinaryStream(2, arquivoInputStream, (int)arquivo.length());
// Executa a Query
pstmt.executeUpdate();
// Agora le o Arquivo da Base e Grava com outro nome !!!
PreparedStatement lerarquivo = con.prepareStatement("SELECT nomeArquivo, arquivo FROM arquivos WHERE Id = 1");
ResultSet rs = lerarquivo.executeQuery();
rs.next();
System.out.println("Nome do Arquivo : " + rs.getString("nomeArquivo"));
System.out.println("Recuperando Arquivo !!!");
// Gera o Arquivo no HD
InputStream arquivoBase = rs.getBinaryStream("arquivo");
// Cria um Buffer
byte[] buffer = new byte[32*1024]; // Buffer 32 kb
// Cria no HD o Arquivo
OutputStream arquivoHD = new FileOutputStream("teste_mp3.mp3");
// Le a quantidade permitida pelo buffer
int bytesLidos = arquivoBase.read(buffer);
// Loop ate terminar de recupar todo o arquivo
while (bytesLidos > 0){
arquivoHD.write(buffer, 0, bytesLidos);
bytesLidos = arquivoBase.read(buffer);
System.out.println("–" + bytesLidos);
}
System.out.println("Arquivo Recuperado Com sucesso : teste_mp3.mp3");[/code]