Мультер : загрузка части файла без возврата ошибки

#node.js #express #multer

Вопрос:

Я реализовал Multer, чтобы разрешить загрузку изображений на сервер node.js/express.

Это хорошо работает в 80% случаев, но для некоторых файлов он загружает 20%, не возвращая никаких ошибок. (Я вроде как новичок в разработке, поэтому не уверен, правильно ли я настроил свою «обработку ошибок»)

Я попытался изменить расширение/ размер файла, но, похоже, ничего не работает : кажется, что это совершенно случайно.

Если у вас есть какие-либо идеи о том, как начать устранять проблему, это было бы здорово!

На стороне сервера :

 //define Path and FileName
    imgPath = "views/zettls/"   req.user._id.toString() 
    var storage = multer.diskStorage({
        destination: function (req, file, cb) {
        cb(null, imgPath)
        },
        filename: function (req, file, cb) {
            cb(null, Date.now()   path.extname(file.originalname)) //Appending extension
        }})

//define upload rule
    const upload = multer({
        storage: storage,
        limits: {
        fileSize: 10000000,
        },
        fileFilter(req, file, cb) {
        if (!file.originalname.match(/.(png|jpg|jpeg|gif|PNG|JPG|JPEG|GIF)$/)){
        cb(new Error('Please upload an image.'))
        }
        cb(undefined, true)
        }
        })


//upload img
    upload.single('img')(req, {},async function (err) {    
        req.body.zetKind = "img"
        req.body.zetBody ="img"
        req.params.type="upload"
        req.body.status = req.params.status
        

//create Zettl
        const doCreateZettl = require('./controllers/doCreateZettl.js')
        response = await doCreateZettl.create(fs,path,ObjectId,req,res)
        

    if (err) throw err

    })

//mistake in how error is send back --> need to check 
    try {
        const incident = await Incident.findById(req.body.id)
        incident.image = req.file.buffer
        incident.save()
        res.send()
        } catch (e){res.redirect('/profile/none')} (error, req, res, next) => {

        res.status(400).send({error: error.message})
    }

 

Сторона клиента :

             <form id="uploadForm" style="height:100%" action="/createImgZettl" method="post" enctype="multipart/form-data">

            <div><input type="text" id="zetTitle" name="title" value="Title" onclick="if(this.value=='Title'){this.value=''}"/></div>
            <div><textarea rows = "10" cols = "100" id="zetDesc" name="description" value="Description" onclick="if(this.value=='Description'){this.value=''}"/></textarea></div>
            <div id="tag" style="margin-bottom:1em;">
                <input class='customLook' value='all,image' id="tagList" name="tags">
                <button type="button"> </button>
            </div>
    
            <div>
                <button class="defaultBTN-big" type="submit"  value="upload"  formaction="/createImgZettl/public"> Publish  </button>
                <button class="defaultBTN-big" type="submit" value="upload"  formaction="/createImgZettl/private">Save </button>
            </div>
        </div>
        </form>