首页 > 解决方案 > 使用 multer 上传大文件 (>2GB)

问题描述

我正在尝试将一个大文件 (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的格式。包应该给我上传的文件。因此,当我尝试上传小文件(<2GB)时,它会成功。但是当我尝试上传超过 2GB 的文件时,我收到以下错误:saveLogFile = async (req,res) => { ... }req.filemulterreq.file

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控制器中上传的文件。

标签: node.jsmulter

解决方案


原因可能是当您使用 multer 时节点将耗尽内存而不传递任何选项。从文档

如果您省略选项对象,文件将保存在内存中并且永远不会写入磁盘。

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

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

推荐阅读