我正在尝试将一个大文件(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.file
。 multer
软件包应该给我上载带有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
控制器中的上载文件。
答案 0 :(得分:0)
这样做的原因可能是,当您使用multer时,如果没有传递任何选项,则节点将耗尽内存。来自docs:
如果省略options对象,文件将保留在内存中 而且永远不会写入磁盘。
尝试使用dest
或storage
选项,以便使用临时文件进行上传:
const upload = multer({ dest: './some-upload-folder' });
router.post('/', upload.single('file'), saveLogFile);