Using this answer, with mkdirp
, I want to create a directory and save files inside. Inside of plates
those folders will be created and reuse if present.
const fs = require('fs')
const mkdirp = require('mkdirp')
// Decode image then save to local storage
const decodeBase64Image = (string, plateNumber) => {
let regex = /^data:.+/(.+);base64,(.*)$/
let matches = string.match(regex)
let ext = matches[1]
let data = matches[2]
let buffer = new Buffer(data, 'base64') // I cant use Buffer.alloc()
let pathForImages = `plates/${plateNumber}`
saveImagesToPath(pathForImages, ext, buffer)
}
const saveImagesToPath = (pathForImages, ext, buffer) => {
mkdirp(pathForImages, function (err) {
fs.writeFileSync(pathForImages, 'data.' + ext, buffer)
})
}
let string = data:image/gif;base64,R0lGODlhPQBEAPeoAJosM//AwO/AwHVYZ/<SHORTEN>w==
// Performing it all
decodeBase64Image(string, 'HGT5KU')
Error message:
fs.js:651
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: EISDIR: illegal operation on a directory, open 'plates/HGT5KU'
Basically, create a sub-folder for plates with the name of the plate numbers and save data inside that folder: plates/HGT5KU/foo.png
others: plates/GFTYU7/bar.jpg