質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

642閲覧

node.jsでmulter + sharpを使って複数写真をリサイズした上で保存したい

pyon_214

総合スコア8

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2020/11/15 17:21

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;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問