mkdirp
とthis answerを使用して、ディレクトリを作成してファイルを保存します。 plates
の中にこれらのフォルダが作成され、存在する場合は再利用されます。ディレクトリでの不正な操作
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')
エラーメッセージ:基本的に
fs.js:651
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: EISDIR: illegal operation on a directory, open 'plates/HGT5KU'
、プレート番号の名前で「プレート」のサブフォルダを作成し、そのフォルダ内のデータを保存します。plates/HGT5KU/foo.png
その他:plates/GFTYU7/bar.jpg
はい、私は 'err'を削除しますが、そこにあります。しかし、はい、私は今参照してください。ありがとう! – Sylar
私はこうしました: "fs.writeFile(__ dirname +' /../${pathForImages+ '/ data。' + ext} '、buffer、function(err){})もう一度ありがとう – Sylar
@Sylar:心配はいりません。あなたがコメント内のコードスパンにバッククイックを入れる必要がある場合は、スパンの周りの2つのバッククォートを使って、単に引用符で囲むことができます: '' fs.writeFile(__ dirname + '/../${pathForImages + '/data。 '+ ext} '、buffer、function(err){})' 'バックティックバックティックコードのバックティックバックティックです。 –