代码之家  ›  专栏  ›  技术社区  ›  Src1988

用Multer解压上传到内存中的文件?

  •  0
  • Src1988  · 技术社区  · 6 年前

    我使用Multer将上传到表单上的文件保存在内存中,这样我就可以解析它并吐出一些东西,但是有没有一种方法可以接收zip文件并将其解压,同时将解压后的文件保存在内存中而不写入磁盘?我知道节点有一个npm模块叫做“unzip”,但它似乎只能从物理位置提取文件,除非我弄错了。我很感激你的洞察力!

    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);
    });
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Src1988    5 年前

    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
        });