解压错误[错误:签名无效:0xff000001]

sho*_*a T 14 javascript unzip node.js

我使用以下库进行节点解压缩 https://github.com/EvanOxfeld/node-unzip

我使用的代码是

var extractor = unzip.Extract({
                path: 'C://TestFolder//TestZip'
            }).on('close', function () {
              console.log("Success to unzip");
            }).on('error', function (err) {
                console.log("error to unzip", err);
            });
            req.pipe(extractor);
Run Code Online (Sandbox Code Playgroud)

在一些zip文件我得到错误的问题(在其他人的工作正常)[错误:无效签名:0x8080014] [错误:无效签名:0x83870008] ....

这个错误并没有提供很多信息...在网上搜索我发现这个 https://github.com/EvanOxfeld/node-unzip/issues/41

并安装并要求unzip2包而不是解压缩,现在问题是我得到以下错误解压错误:无效签名:0xff000001

我使用相同的代码解压缩和unzip2(我在上面的帖子中提供),我需要使用它吗?任何提示如何解决?

UPDATE

我从postman发送zip文件,如下所示 在此输入图像描述

Ami*_*ein 8

您可以临时将ZIP文件保存在磁盘上,然后使用它将其解压缩adm-zip.

这是一个示例代码:


客户端:

<form action="/upload" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

服务器端

使用multer保存上传的文件,并adm-zip进行解压缩.您需要同时安装:

npm install --save multer
npm install --save adm-zip
Run Code Online (Sandbox Code Playgroud)

在这里安装一个使用它们的例子之后:

var multer=require('multer')   // a module for saving file from form.
var AdmZip = require('adm-zip'); // a module for extracting files
var express=require('express')  // module for receving HTTP traffic
var app=express()

var upload = multer({ dest: 'uploads/' })

app.post('/upload',upload.single('fileToUpload'),function(req,res){
   console.log('The file uploaded to:' + req.file.path)
   var zip = new AdmZip(req.file.path); 
   zip.extractAllTo( "/detination_folder/");
})
Run Code Online (Sandbox Code Playgroud)

有关我使用的模块的信息:

https://github.com/expressjs/multer,https://github.com/cthackers/adm-zip


l3e*_*est 5

Node-unzip2修补了此问题。

例如:

var readStream = fs.createReadStream('path/to/archive.zip');
var writeStream = fstream.Writer('output/path');

readStream
  .pipe(unzip.Parse())
  .pipe(writeStream)
Run Code Online (Sandbox Code Playgroud)