首页 > 解决方案 > 为什么multer不是目的地未定义

问题描述

我一直在尝试使用 multer 将文件上传到我的本地磁盘存储,但即使在设置了目标之后,我仍然看不到我在 multer 磁盘存储中设置为目标的上传文件夹中的文件。这是HTML

<html lang="en">
    <%- include('./partails/head.ejs') %> 
<body>
    <%- include('./partails/nav.ejs') %> 
    <div class="container">
        <h1 class="top">add new book</h1>
        <form action="/add-book" enctype="multipart/form-data" method="POST">
        <div class="mb-3">
            <label for="bookName">book name</label>
            <input type="text" name="bookName" id="bookName">
        </div>
        <div class="mb-3">
            <label for="bookAuthor">book author</label>
            <input type="text" name="bookAuthor" id="bookAuthor">
        </div>
        <div class="mb-3">
            <label for="pages">number of pages</label>
            <input type="number" name="pages" id="pages">
        </div>
        <div class="mb-3">
            <label for="bookCover">book cover</label>
            <input type="file" name="bookCover" id="bookCover">
        </div>
        <button class="btn bg-blue-600 w-full text-white uppercase">add book</button>
    </form>
    </div>
</body>
</html>

多磁盘存储

const multer = require('multer')

const Storage = multer.diskStorage({
    destination: function(req,file,cb){
        cb(err=>{
            console.log(err)
        },'upload')
    },
    filename: function(req,file,cb){
        const ext = file.originalname.substr(file.originalname.lastIndexOf('.'))
        cb(null,file.fieldname + '-' + Date.now()+ ext)
    }
})

module.exports = store = multer({Storage})

这是路线

const {Router} = require('express')
const route = Router()
const bookCont = require('../controller/bookController')
const store = require('../multer')

route.get('/books', bookCont.get_book_route)

route.get('/add-book',bookCont.get_add_book)
route.post('/add-book',store.single('bookCover'),bookCont.post_add_book)

module.exports = route

标签: node.jsexpressmulter

解决方案


推荐阅读