使用 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.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
控制器中访问上传的文件。
原因可能是当您使用 multer 而不传递任何选项时,节点将 运行 内存不足。来自 docs:
In case you omit the options object, the files will be kept in memory
and never written to disk.
尝试使用 dest
或 storage
选项以便使用临时文件进行上传:
const upload = multer({ dest: './some-upload-folder' });
router.post('/', upload.single('file'), saveLogFile);
我正在尝试将一个大文件 (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
控制器中访问上传的文件。
原因可能是当您使用 multer 而不传递任何选项时,节点将 运行 内存不足。来自 docs:
In case you omit the options object, the files will be kept in memory and never written to disk.
尝试使用 dest
或 storage
选项以便使用临时文件进行上传:
const upload = multer({ dest: './some-upload-folder' });
router.post('/', upload.single('file'), saveLogFile);