我正在尝试使用Adm-Zip将文件打包到zip文件中
var AdmZip = require('adm-zip');
var pathToZip = 'build/release/Ext.zip';
var zip = new AdmZip();
zip.addLocalFile('background.js');
zip.addLocalFile('chrome_ex_oauth.html');
zip.addLocalFolder('images');
zip.writeZip(pathToZip);
Run Code Online (Sandbox Code Playgroud)
但是,所有文件都将作为文件夹添加到zip中,并且实际内容不会被压缩.
入门参考如下,这似乎是一个非常简单的例子,它没有按预期工作.我究竟做错了什么? https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction
我正在尝试从nseindia.com下载文件并在内存中解压缩.我正在使用nodejs webkit和adm-zip.我在控制台上收到错误:
未捕获的无效或不支持的zip格式.找不到END标头
代码:
var http = require('http'),
fs = require('fs'),
request = require('request'),
AdmZip = require('adm-zip'),
out = fs.createWriteStream('data/nseeqbhav.zip'); // For saving NSE Equity bhavcopy
// Downloading NSE Bhavcopy
request(
{ method: 'GET',
uri: 'http://www.nseindia.com/content/historical/EQUITIES/2012/DEC/cm19DEC2012bhav.csv.zip',
headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11",
"Referer": "http://www.nseindia.com/products/content/all_daily_reports.htm",
"Accept-Encoding": "gzip,deflate,sdch",
"encoding": "null",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Cookie": "cookie"
}
}
).pipe(out);
var zip = new AdmZip("data/nseeqbhav.zip"),
zipEntries = zip.getEntries();
zip.extractAllTo(/*target path*/"data/unzip/", /*overwrite*/true);
Run Code Online (Sandbox Code Playgroud)
我试着跟随结束流但没有成功.
out.end();
out.destroy();
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我使用以下代码
https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction
我需要的是从请求获取一个zip文件(我使用快递和我的请求和响应)我需要提取(解压缩)它到某个路径(在本地驱动器的示例中),我应该在哪里放req和我在这里失踪的东西让它发挥作用
fn: function (req, res) {
var admZip = require('adm-zip');
var zip = new admZip();
zip.addLocalFile("C://TestFolder//TestZip");
Run Code Online (Sandbox Code Playgroud)
在请求正文中我获取zip文件(即时通讯使用邮递员,在我体内使用二进制文件并选择一个zip文件)
我正在尝试使用adm-zip将内存中的文件添加到内存中的zip文件中.似乎正确创建了zip文件(保存zipData的结果可以在Windows中解压缩),但压缩率始终为零.
这是我期望工作的代码模型,但没有.从输出中可以看出,"compressedData"为null,"size"和"compressedSize"无论传递给文件内容的值是什么.
var admzip = require("adm-zip")
var zip = new admzip();
zip.addFile("tmp.txt", "aaaaaaaaaaaaaaaaaaaa");
var zipData = zip.toBuffer();
console.log(zip.getEntries()[0].toString());
Run Code Online (Sandbox Code Playgroud)
https://runkit.com/embed/pn5kaiir12b0
如何让它压缩文件以及压缩文件?
我收到此错误“无效或不受支持的 zip 格式”。当我尝试使用 adm-zip (缓冲区)解压缩内存中的文件时,未找到 END 标头。我已经确认我尝试解压缩的文件也是一个 zip 文件。
ftpConnection.get(newZipFile.name, function (err, stream:NodeJS.ReadableStream) {
if (err) {
console.log('error: ', err)
}
// unzipping files
let zdata = []
let innerFiles: admZip.IZipEntry[] = []
stream.on('data', (buffer) => { zdata.push(buffer) })
stream.on('end', function () {
try {
let zip = new admZip(Buffer.concat(zdata))
innerFiles = zip.getEntries()
} catch (e) {
console.log('error: ', e)
return
}
}
Run Code Online (Sandbox Code Playgroud) 我需要下载一个文件并将axios
其解压缩到电子应用程序的内存中。
我读了一些支持字节缓冲区构造函数的SO线程(例如)adm-zip
,但我在文档中看不到这一点。当我提取内容时,它的行为就像数组为空,但事实并非如此。它只是创建一个文件,并且不会抛出任何我不想使用的错误request
,因为该 api 被标记为已弃用。我的代码是这样的:
const axios = require("axios");
const AdmZip = require('adm-zip');
const url = "http://update-service.test.w3champions.com/api/maps";
const body = await axios.get(url, {
responseType: 'arraybuffer'
});
const data = body.data;
const zip = new AdmZip(data);
zip.extractAllTo(to, true);
Run Code Online (Sandbox Code Playgroud)
我觉得超级愚蠢,因为我曾经工作过一次,然后改变了一些东西,现在我似乎没有再次发现错误:/遗憾的是我没有提交工作状态......
编辑:所以,我们想通了:Electron 做了一些奇怪的事情,返回一个数组缓冲区而不是 adm-zip 需要的缓冲区。由于我懒惰地添加了包arraybuffer-to-buffer
,现在代码可以工作:
const arrayBufferToBuffer = window.require('arraybuffer-to-buffer');
const url = `${this.updateUrl}api/${fileName}?ptr=${this.isTest}`;
const body = await axios.get(url, {
responseType: 'arraybuffer'
});
const buffer = arrayBufferToBuffer(body.data);
const zip = new AdmZip(buffer);
zip.extractAllTo(to, true);
Run Code Online (Sandbox Code Playgroud) 我正在使用adm-zip
拉链local directory and all its nested files and directories.
var AdmZip = require('adm-zip');
var pathToZip = process.env.PUBLIC + '/Demo/Backup.zip';
var zip = new AdmZip();
zip.addLocalFolder("C:\\Users\\Public\\Test\\db");
zip.writeZip(pathToZip);
Run Code Online (Sandbox Code Playgroud)
问题:
所有文件都被添加为zip文件夹中的文件夹,实际内容不会被压缩.
哪里错了?