无论如何要使用 Multer 解压缩上传到内存中的文件?
Anyway to unzip a file uploaded in memory using Multer?
我正在使用 Multer 获取一个上传到表单上的文件并将其保存在内存中,以便我可以解析它并吐出一些东西,但是有没有一种方法可以让我接收一个 zip 文件并能够解压缩它并仍然将解压缩的文件保留在内存中而不写入磁盘?我知道节点有一个名为 'unzip' 的 npm 模块,但它似乎只能从物理位置提取文件,除非我弄错了。我很感激任何见解!
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage: storage, putSingleFilesInArray: true });
// landing page
router.get('/', function (req, res) {
res.sendFile(path.join(__dirname, '../../views', 'index.html'));
});
// parse multiple files from the form
router.post('/upload', upload.array('upload'), function (req, res) {
console.log(req.files);
});
使用 AdmZip npm 包解决(如下所示)。
var AdmZip = require('adm-zip');
if (req.files[0].mimetype == 'application/x-zip-compressed'){
var zip = new AdmZip(req.files[0].buffer);
var zipEntries = zip.getEntries();
zipEntries.forEach(function(zipEntry) {
//do stuff
});
我正在使用 Multer 获取一个上传到表单上的文件并将其保存在内存中,以便我可以解析它并吐出一些东西,但是有没有一种方法可以让我接收一个 zip 文件并能够解压缩它并仍然将解压缩的文件保留在内存中而不写入磁盘?我知道节点有一个名为 'unzip' 的 npm 模块,但它似乎只能从物理位置提取文件,除非我弄错了。我很感激任何见解!
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage: storage, putSingleFilesInArray: true });
// landing page
router.get('/', function (req, res) {
res.sendFile(path.join(__dirname, '../../views', 'index.html'));
});
// parse multiple files from the form
router.post('/upload', upload.array('upload'), function (req, res) {
console.log(req.files);
});
使用 AdmZip npm 包解决(如下所示)。
var AdmZip = require('adm-zip');
if (req.files[0].mimetype == 'application/x-zip-compressed'){
var zip = new AdmZip(req.files[0].buffer);
var zipEntries = zip.getEntries();
zipEntries.forEach(function(zipEntry) {
//do stuff
});