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

Upload large file (>2GB) with 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 控制器中访问上传的文件。

原因可能是当您使用 multer 而不传递任何选项时,节点将 运行 内存不足。来自 docs:

In case you omit the options object, the files will be kept in memory and never written to disk.

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

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