node.jsを利用したwebアプリでmulterとsharpを使って複数写真をリサイズした上で保存したいのですが、アップロードするファイルにより、エラーが発生してしまいます。
作りたい流れとしては、
①元のファイルをunresizedフォルダにアップロード
②unresizedフォルダの画像をsharpでリサイズして所定のフォルダに保存
③unresizedフォルダの中身を削除
です。
当方プログラミング初学者のため、有識者の方のお知恵を貸していただければ幸いです。
Uncaught Error: public/development/images/cars/unresized/TOYOTA-Sedan-1605460558740-735280777.jpg: unable to open for read unix error: No such file or directory pngload: stream error vips2png: unable to write to target public/development/images/cars/548195724/1.png : 利用可能なデバッガーがありません。'variables' を送信できません Process exited with code 1
node.js
1 2var storage = multer.diskStorage({ 3 destination: function(req, file, cb){ 4 cb(null, `./public/${process.env.NODE_ENV}/images/cars/unresized`) 5 }, 6 filename: function(req, file, cb){ 7 var uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9) 8 9 cb(null, req.body.make + '-' + req.body.type + '-' + uniqueSuffix + '.jpg'); 10 } 11 }); 12 13var upload = multer({storage: storage}); 14 15router.post("/regist/execute", upload.array('image'), (req,res)=>{ 16 17 var paths = req.files.map(file=>file.path); 18 19 fs.mkdirSync('public/development/images/cars/' + req.body.car_id); 20 21 var sharp_promise = new Promise((resolve, reject)=>{ 22 paths.forEach((path, i) =>{ 23 24 sharp(path) 25 .resize(600,450,{ 26 fit: 'contain' 27 }) 28 .toFile('public/development/images/cars/' + req.body.car_id+ '/'+ i +'.png',(err,info)=>{ 29 if(err){ 30 throw err 31 } 32 console.log(info) 33 })}) 34 35 resolve(); 36 37 }) 38 39 sharp_promise.then(()=>{ 40 var targetRemoveDirectoryPath = 'public/development/images/cars/unresized/' 41 var targetRemoveFiles = fs.readdirSync(targetRemoveDirectoryPath); 42 console.log(targetRemoveFiles); 43 for (var file in targetRemoveFiles) { 44 console.log(file); 45 fs.unlinkSync(targetRemoveDirectoryPath + targetRemoveFiles[file]); 46 } 47 }) 48 49}); 50 51module.exports = router;
あなたの回答
tips
プレビュー