Как ограничить размер файла или количество файлов в multer Express и обработать ошибку?

#javascript #node.js #express #multer

#javascript #node.js #экспресс #multer

Вопрос:

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

Например, пользователь может загружать максимум 100 файлов одновременно или пользователь может загружать файлы размером до 100 мб. Но когда я запускаю его и выбираю 7 файлов по 10 МБ каждый, он выдает мне эту ошибку:

введите описание изображения здесь

Также как я могу обработать ошибку, если какой-либо из пределов превышает при загрузке пользователя?

Ниже приведен мой код:

 var maxSize = 100 * 1024 * 1024;
const express = require("express")
const multer = require('multer');
const csvtojson = require('csvtojson');

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, './upload') //Destination folder
    },
    filename: function (req, file, cb) {
      cb(null, file.originalname) //File name after saving
    }
  })
const upload = multer({ storage: storage ,limits: { fileSize: maxSize }});
const router = express.Router()

router.post("/multiple",upload.array("ziptable",100),(req,res)=>{
    var file = req.files;
    console.log(file)
    res.send("ok")
})
 

мой html:

     <form action="/multiple" method="POST" enctype="multipart/form-data">
        <div id="middle">
            <input id="uploadzip" name="ziptable" type="file" multiple>
            <button id="submit" type="submit" class="btn btn-primary">SELECT FILES</button>
        </div>
    </form>
 

Ответ №1:

На данный момент нет функциональности, подобной allFileSizeLimit для решения этой проблемы.

Может быть, вы можете написать какой-нибудь пользовательский код в fileFilter функции. Найдите сумму размеров файлов, и если этот общий размер превышает ваш лимит, вы можете выдать пользовательскую ошибку.

Кроме того, вы можете написать пользовательский отправитель формы на интерфейсном javascript и отправить запрос на сервер, только если общий размер меньше вашего предела. Но этот javascript может быть изменен консолью браузера, поэтому вам нужно написать вышеуказанную логику на сервере.

Комментарии:

1. Большое вам спасибо. Я понимаю, но почему я получаю доступ к сайту, когда я загружаю файлы?

2. Ну, я не сталкивался с этой проблемой, но вы можете отладить код и проверить, с какой точки сервер выдает ошибку.