ошибка при загрузке видео в nodejs - PullRequest
0 голосов
/ 28 апреля 2020

Я пытался загрузить видео с использованием cloudinary, но, похоже, выдает ошибку с несколькими сообщениями, что Unclear.it просто показывает MulterError: Неожиданное поле в wrappedFileFilter (/app/node_modules/multer/index.js:40: 19). Я дал форму и почтовый маршрут в приложении ниже. ошибка

MulterError: Unexpected field
2020-04-28T09:27:08.315213+00:00 app[web.1]: at wrappedFileFilter (/app/node_modules/multer/index.js:40:19)
2020-04-28T09:27:08.315214+00:00 app[web.1]: at Busboy.<anonymous> (/app/node_modules/multer/lib/make-middleware.js:114:7)
2020-04-28T09:27:08.315215+00:00 app[web.1]: at Busboy.emit (events.js:310:20)
2020-04-28T09:27:08.315215+00:00 app[web.1]: at Busboy.emit (/app/node_modules/busboy/lib/main.js:38:33)
2020-04-28T09:27:08.315216+00:00 app[web.1]: at PartStream.<anonymous> (/app/node_modules/busboy/lib/types/multipart.js:213:13)      
2020-04-28T09:27:08.315216+00:00 app[web.1]: at PartStream.emit (events.js:310:20)
2020-04-28T09:27:08.315217+00:00 app[web.1]: at HeaderParser.<anonymous> (/app/node_modules/dicer/lib/Dicer.js:51:16)
2020-04-28T09:27:08.315217+00:00 app[web.1]: at HeaderParser.emit (events.js:310:20)
2020-04-28T09:27:08.315218+00:00 app[web.1]: at HeaderParser._finish (/app/node_modules/dicer/lib/HeaderParser.js:68:8)
2020-04-28T09:27:08.315218+00:00 app[web.1]: at SBMH.<anonymous> (/app/node_modules/dicer/lib/HeaderParser.js:40:12)
2020-04-28T09:27:08.315218+00:00 app[web.1]: at SBMH.emit (events.js:310:20)
2020-04-28T09:27:08.315219+00:00 app[web.1]: at SBMH._sbmh_feed (/app/node_modules/streamsearch/lib/sbmh.js:159:14)
2020-04-28T09:27:08.315219+00:00 app[web.1]: at SBMH.push (/app/node_modules/streamsearch/lib/sbmh.js:56:14)
2020-04-28T09:27:08.315219+00:00 app[web.1]: at HeaderParser.push (/app/node_modules/dicer/lib/HeaderParser.js:46:19)
2020-04-28T09:27:08.315220+00:00 app[web.1]: at Dicer._oninfo (/app/node_modules/dicer/lib/Dicer.js:197:25)
2020-04-28T09:27:08.315220+00:00 app[web.1]: at SBMH.<anonymous> (/app/node_modules/dicer/lib/Dicer.js:127:10)

почтовый маршрут

var express = require("express");
    var router = express.Router();
    var moment = require("moment");
    var Campground = require("../models/campground");
    var User = require("../models/user");
    var middleware = require("../middleware");
    var multer = require('multer');
    var storage = multer.diskStorage({
        filename: function(req, file, callback) {
            callback(null, Date.now() + file.originalname);
        }
    });
    var imageFilter = function(req, file, cb) {
        if (!file.originalname.match(/\.(jpg|jpeg|png|gif|mp4)$/i)) {
            return cb(new Error('Only image/video files are allowed!'), false);
        }
        cb(null, true);
    };
    var upload = multer({ storage: storage, fileFilter: imageFilter })

    var cloudinary = require('cloudinary');
    cloudinary.config({
        cloud_name: 'iatneh1',
        api_key: process.env.CLOUDINARY_API_KEY,
        api_secret: process.env.CLOUDINARY_API_SECRET
    });

    router.post("/c", middleware.isloggedin, upload.single('video'), function(req, res) {
        cloudinary.v2.uploader.upload(req.file.path, function(result) {
            req.body.ca.video = result.secure_url;
            req.body.ca.format = result.format;
            req.body.ca.author = {
                id: req.user._id,
                username: req.user.username
            }
            req.body.ca.created = new Date();
            Campground.create(req.body.ca);
            res.redirect('/c/' + campground.id);
        });

    });
    module.exports = router;

форма

<div class="container">
        <form action="/c" method="post" enctype="multipart/form-data">
            <h2 style="text-align: center;">Add new entries</h2>
            <div style="width: 30%; margin: 20px auto;">
                <div class="form-group"><input class="form-control" type="text" name="ca[name]" placeholder="name">
                </div>
                <div class="form-group">
                    <input class="form-control" type="number" name="ca[price]" placeholder="Price">
                </div>
                <div class="form-group">
                    <label for="image">Image</label>
                    <input type="file" id="image" name="images" accept="image/*,video/*" multiple>
                </div>
                <div class="form-group">
                    <label for="image">Video</label>
                    <input type="file" name="video" accept="file_extension|audio/*|video/*|image/*|media_type">
                </div>
                <div class="form-group">
                    <input type="text" name="ca[description]" class="form-control" placeholder="description">
                </div>

                <div class="form-group">
                    <button class="btn btn-primary" type="submit">submit!!</button></div>
                <a href="/c">Go back</a>
            </div>
        </form>

    </div>
...