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

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

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

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

0回答

926閲覧

Multerで画像をアップロードしたいがreq.fileが未定義になる

hokosugi

総合スコア63

Node.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2021/01/04 23:50

初心者で難しいことをやってしまっていますが、どうしても作りたくて無理は承知でやっております。
ExpressでMulterを使って画像をアップロードしたいが上手く行っておりません。

やってみたこと
enctype="multipart/form-data"の設置場所の確認。
MulterのREADMEを読んでみて、間違い探し。

結局、分からずじまいで、質問します。

結果(ターミナル)

Listening on port 3000...3000 [Object: null prototype] { image: 'スクリーンショット 2021-01-02 6.59.33.png' } undefined POST / 200 155.283 ms - 489 GET /stylesheets/style.css 304 15.109 ms - - [Object: null prototype] { image: 'IMG_1649.JPG' } undefined POST / 200 58.389 ms - 451 GET /stylesheets/style.css 304 2.276 ms - -

route.index.js

const express = require('express'); const router = express.Router(); const moment = require("moment"); const multer = require('multer'); const storage = multer.diskStorage({ destination: './public', filename: function(req, file, cb){ cb(null, file.originalname) } }) const upload = multer({storage: storage}) router .get("/", (req, res) => { res.render("index", { message: "メッセージが出力されます", date: "入力した時刻を表示します" }); }) .post("/", upload.single('image'), (req, res) => { res.render("index", { message: req.body.image, date: moment().format("YYYY-MM-DD HH:mm:ssZ") }); const file = req.file const meta = req.body // デバッグのため、アップしたファイルの名前を表示する console.log(meta, file) }); module.exports = router;

view index.ejs

<!DOCTYPE html> <html> <head> <title>rekognition</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <div role="main"> <p><%= message %></p> <p><%= date %></p> <form action="/" method="post" enctype=”multipart/form-data”> <p><input type="file" name="image"> <input type="submit" value="送信"></p> </form> </div> </body> </html>

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問