Récupérer une Image stockée sous forme de BLOB sur un disque dur MYSQL
j'essaie de créer un PDF basé sur l'information qui réside dans une base de données. Sachez que j'ai besoin de récupérer une image TIFF qui est stocké comme un BLOB sur une base de données mysql à partir de Java. Et je ne sais pas comment le faire. Les exemples que j'ai trouvés montrent comment le récupérer et le sauver comme un dossier (mais sur le disque) et je devais résider sur la mémoire.
nom de la Table: IMAGENES_REGISTROS
BLOB nom de champ: IMAGEN
Des Idées?
4 réponses
sur votre ResultSet
appel:
Blob imageBlob = resultSet.getBlob(yourBlobColumnIndex);
InputStream binaryStream = imageBlob.getBinaryStream(0, imageBlob.length());
alternativement, vous pouvez appeler:
byte[] imageBytes = imageBlob.getBytes(1, (int) imageBlob.length());
comme BalusC a noté dans son commentaire, vous feriez mieux d'utiliser:
InputStream binaryStream = resultSet.getBinaryStream(yourBlobColumnIndex);
et puis le code dépend de comment vous allez lire et intégrer l'image.
private void loadFileDataBlobFromDataBase()
{
List<Blob> bFile = jdbcTemplate.query(sql, new RowMapper<Blob>() {
@Override
public Blob mapRow(ResultSet rs, int rowNum)
throws SQLException {
return rs.getBlob(1);
}
});
if (bFile != null && bFile.size() > 0) {
bufReader = new BufferedReader(new InputStreamReader(bFile.get(
0).getBinaryStream()));
}
if (null != bufReader) {
dataVO record = null;
String lineStr = bufReader.readLine();
record = (dataVO) lineMapper.mapLine(lineStr, 1);
}
}
}
imagebytes = rs.getBytes("images");
image=getToolkit().createImage(imageBytes);
Image img = image.getScaledInstance(100,100,Image.SCALE_SMOOTH);
ImageIcon icon=new ImageIcon(img);
jLabel6.setIcon(icon);
essayez ce code pour obtenir l'image réglable de blog Mysql en netbeans
final String dbURL = "jdbc:mysql://localhost:3306/portfolio";
final String dbUser = "root";
final String dbPass = "";
Connection conn = null;
Statement stmt = null;
try {
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbUser, dbPass);
System.out.println("db connected");
stmt = (Statement) conn.createStatement();
ResultSet rs1;
rs1 = stmt.executeQuery("select profileImage from tbl_welcome where id = 1117");
if (rs1.next()) {
byte[] imgData = rs1.getBytes("profileImage");//Here....... r1.getBytes() extract byte data from resultSet
System.out.println(imgData);
response.setHeader("expires", "0");
response.setContentType("image/jpg");
OutputStream os = response.getOutputStream(); // output with the help of outputStream
os.write(imgData);
os.flush();
os.close();
}
} catch (SQLException ex) {
// String message = "ERROR: " + ex.getMessage();
ex.printStackTrace();
} finally {
if (conn != null) {
// closes the database connection
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}