This code sample will convert any database blob to real file and save directly to your drive, this covers the example using Mysql database and Nodejs.
Installing Package:
npm install cli-progress --save
npm install fs --save
npm install sync-mysql --save
Setup the required package.
const fs = require('fs');
const Mysql = require('sync-mysql');
const cliProgress = require('cli-progress');
Setup the Mysql connection
const connection = new Mysql({
host:'localhost',
user:'root',
password:'12345',
database: 'DbBlob'
})
Setting up the getData function to fetch the blob field in the database.
async function getData() {
// create a new progress bar instance and use shades_classic theme
const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);
var sql = "select photodesc, photo from imagestorage where mimedata in
('image/jpg','image/jpeg','image/gif','image/png','image/bmp','image/tiff') order
by mimedata asc";
var result = await connection.query(sql)
console.log('Total Record: '+result.length)
bar.start(result.length, 0, {
speed: "125"
});
var cnt = 1;
result.forEach((row) => {
setTimeout(() => {
convertToFile(row);
}, 1000);
bar.update(cnt);
cnt++;
});
// stop the progress bar
bar.stop();
console.log('Uploading complete: '+result.length)
//process.exit()
}
In this section will convert the binary blob to file
function convertToFile(row){
var base64Image = Buffer.from( row['photo'], 'binary' ).toString('base64');
fs.writeFile(row['photo_desc'],base64Image, {encoding: 'base64'}, function(err) {
console.log('File created');
});
}
Call the function here...
getData() //call the function
There you go....
You can use this code without any risk, feel free to try and let me know your feedback . If you want more please leave a comment and a cup of coffee should be enough to create more content just like these.
Thank you!