使用multer上传大文件(> 2GB)

时间:2020-11-01 12:53:55

标签: node.js multer

我正在尝试将一个大文件(7GB)上传到我的服务器。为此,我正在使用multer

const express = require('express');

const multer = require('multer');

const {
    saveLogFile,
} = require('../controller/log');

const router = express.Router();
const upload = multer();

router.post('/', upload.single('file'), saveLogFile);

在我的saveLogFile控制器中,它的格式为saveLogFile = async (req,res) => { ... },我想获取req.filemulter软件包应该给我上载带有req.file的文件。因此,当我尝试上传小文件(<2GB)时,它会成功运行。但是当我尝试上传超过2GB的文件时,出现以下错误:

buffer.js:364
    throw new ERR_INVALID_OPT_VALUE.RangeError('size', size);
    ^

RangeError [ERR_INVALID_OPT_VALUE]: The value "7229116782" is invalid for option "size"

如何绕过它?实际上,我所需要做的就是访问saveLogFile控制器中的上载文件。

1 个答案:

答案 0 :(得分:0)

这样做的原因可能是,当您使用multer时,如果没有传递任何选项,则节点将耗尽内存。来自docs

如果省略options对象,文件将保留在内存中 而且永远不会写入磁盘。

尝试使用deststorage选项,以便使用临时文件进行上传:

const upload = multer({ dest: './some-upload-folder' });
router.post('/', upload.single('file'), saveLogFile);