【问题标题】:How to limit file size or number of files in multer express and handle error?如何限制 multer express 中的文件大小或文件数量并处理错误?
【发布时间】:2020-11-24 11:09:30
【问题描述】:

我正在编写一个需要限制文件大小或限制上传文件数量的代码。

例如,用户一次最多可以上传 100 个文件,或者用户最多可以上传 100 mb 的文件。但是当我运行它并选择 7 个每个 10 mb 的文件时,它给了我这个错误:

如果用户上传时任何限制超过了我该如何处理错误?

下面是我的代码:

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>

【问题讨论】:

    标签: javascript node.js express multer


    【解决方案1】:

    目前,没有像 allFileSizeLimit 这样的功能来处理这个问题。

    也许您可以在fileFilter 函数中编写一些自定义代码。 找出文件大小的总和,如果总大小超过您的限制,您可以抛出自定义错误。

    此外,您可以在前端 javascript 中编写自定义表单提交器,并且只有在总大小小于您的限制时才将请求发送到服务器。但是这个 javascript 可以通过浏览器控制台更改,所以你必须在服务器中编写上述逻辑。

    【讨论】:

    • 非常感谢。我明白了,但为什么我上传文件时可以访问我的接收站点?
    • 好吧,我还没有遇到过这个问题,但是您可以调试代码并检查服务器从哪个点抛出错误。
    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2015-12-31
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多