Guardar/leer archivo en una columna LONGBLOB
Hola experto:
Mi consulta es la siguiente: Que tamaño de buffer debo utilizar para leer un archivo desde la base de datos??
Esto es parte del codigo que estoy utilizando:
// Escribir archivo en la BD Mysql
...
PreparedStatement ps = conn.prepareStatement("insert into anlagen values('"+sendername.toString()+"','"+filename.toString() + "',?)");
File fileIn = new File("C:\\diso_temp\\" + filename);
int fileLength = (int) fileIn.length();
InputStream streamedFile = new FileInputStream(fileIn);
ps.setBinaryStream(1, streamedFile, fileLength);
ps.executeUpdate();
ps.close();
streamedFile.close();
...
// Leer archivo de la BD (reading/loading)
...
ResultSet rs = conn.createStatement().executeQuery("SELECT file,filename FROM anlagen");
while (rs.next()) {
Blob blob = rs.getBlob("file");
String filename = rs.getString("filename");
OutputStream fwriter = new FileOutputStream("C:\\"+filename);
readFromBlob(blob, fwriter);
fwriter.close();
}
...
public static long readFromBlob(Blob blob, OutputStream out)
throws SQLException, IOException {
InputStream in = blob.getBinaryStream();
int length = -1;
long read = 0;
byte[] buf = new byte[bBufLen];
while ((length = in.read(buf)) != -1) {
out.write(buf, 0, length);
read += length;
}
in.close();
return read;
}
Mi problema está en esta linea: byte[] buf = new byte[bBufLen]; , ya que no se que valor colocar en vez de la variable bBufLen.
De antemano, gracias por su ayuda
Mi consulta es la siguiente: Que tamaño de buffer debo utilizar para leer un archivo desde la base de datos??
Esto es parte del codigo que estoy utilizando:
// Escribir archivo en la BD Mysql
...
PreparedStatement ps = conn.prepareStatement("insert into anlagen values('"+sendername.toString()+"','"+filename.toString() + "',?)");
File fileIn = new File("C:\\diso_temp\\" + filename);
int fileLength = (int) fileIn.length();
InputStream streamedFile = new FileInputStream(fileIn);
ps.setBinaryStream(1, streamedFile, fileLength);
ps.executeUpdate();
ps.close();
streamedFile.close();
...
// Leer archivo de la BD (reading/loading)
...
ResultSet rs = conn.createStatement().executeQuery("SELECT file,filename FROM anlagen");
while (rs.next()) {
Blob blob = rs.getBlob("file");
String filename = rs.getString("filename");
OutputStream fwriter = new FileOutputStream("C:\\"+filename);
readFromBlob(blob, fwriter);
fwriter.close();
}
...
public static long readFromBlob(Blob blob, OutputStream out)
throws SQLException, IOException {
InputStream in = blob.getBinaryStream();
int length = -1;
long read = 0;
byte[] buf = new byte[bBufLen];
while ((length = in.read(buf)) != -1) {
out.write(buf, 0, length);
read += length;
}
in.close();
return read;
}
Mi problema está en esta linea: byte[] buf = new byte[bBufLen]; , ya que no se que valor colocar en vez de la variable bBufLen.
De antemano, gracias por su ayuda
1 respuesta
Respuesta de hfpg2001
1