`[object: null prototype] {title: 'video', описание: 'My video !!' } на nodejs - multer` - PullRequest
0 голосов
/ 03 мая 2020
import routes from "./routes";
import multer from "multer";

const multerVideo = multer({ dest: "videos/" });

export const localsMiddleware = (req, res, next) => {
res.locals.siteName = "Webtube";
res.locals.routes = routes;
res.locals.user = {
    isAuthenticated: true,
    id: 1
}
next();
};


--------------------------------------------------------------------------------------------
export const uploadVideo = multerVideo.single("videoFile");

export const postupload = (req, res) => {
const { body } = req;
//To Do: Upload and save Video
console.log(body);
res.render("upload", { pageTitle: "upload" });
};

--------------------------------------------------------------------------------------------
extends layouts/main

block content
    div.form_container
        form(action=`/videos${routes.upload}`, method="post", enctype="multipart/form-data")
            label(for="file") Video File
            input(type="file", id="file", name="videoFile", required=true, 
oninvalid="this.setCustomValidity('please fill out this field')", accept="video/*")
            input(type="text", placeholder="Title", name="title", required=true)
            textarea(name="description", placeholder="Description", required=true)
            input(type="submit", value="Upload Video")

Я пытался использовать multer, но результат был примерно таким: [object: null prototype] {title: 'video', описание: 'My video !!' } Я тоже хочу получить имя видеофайла, но не смог. Есть ли кто-нибудь, кто знает, как решить проблему?

1 Ответ

0 голосов
/ 03 мая 2020

При использовании .single(..) multer заполняется свойство file для объекта req, которое будет содержать все необходимые данные / информацию. В вашем случае (при условии, что, конечно, uploadVideo -программа вызывается раньше):

export const postupload = (req, res) => {
    const { file } = req;
    //To Do: Upload and save Video
    console.log(file.originalname);
    res.render("upload", { pageTitle: "upload" });
};

Проверьте эту ссылку , если вы хотите увидеть все свойства в file - объект.

...