我在尝试做一个简单的jszip时遇到错误
未捕获(承诺)ReferenceError:未定义saveAs
很确定我收录了所有正确的文件,所以我不确定我做错了什么,有人可以赐教吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Download</title>
<link rel="stylesheet" href="css/download.css">
<script type="text/javascript" src="jszip/dist/jszip.js"></script>
<script type="text/javascript" src="https://stuk.github.io/jszip-utils/dist/jszip-utils.js"></script>
<script src='https://code.jquery.com/jquery-2.2.4.min.js'></script>
<script src="js/download.js"></script>
<link href="https://fonts.googleapis.com/css?family=Josefin+Sans" rel="stylesheet">
</head>
<body>
<div class="maindiv">
<header>
<a href="index.html" class="company">Instasample</a>
<a href="login" class="login">Login</a>
</header>
<div class="soulection">
<button id="kick" onclick="download(this.id)" >kick</button>
<button id="snare" onclick="download(this.id)" >snare</button>
<button id="hat" onclick="download(this.id)" >hat</button>
<button id="open hat" onclick="download(this.id)" >open hat</button>
<button id="rim" onclick="download(this.id)" >rim</button>
<button id="perc" onclick="download(this.id)" >perc</button>
<button id="tom" onclick="download(this.id)" >tom</button>
<button id="clap" onclick="download(this.id)" >clap</button>
<button id="foley" onclick="download(this.id)" >foley</button>
<button id="ambient" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FileReader和JSZip.js在浏览器中打开zip文件,然后处理其中包含的文件.我无法弄清楚如何正确地将FileReader对象传递给JSZip.
这是我用来加载javascript的页面的剥离版本:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script type="text/javascript" src="zipscan.js"></script>
<script type="text/javascript" src="jszip.js"></script>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
</head>
<body>
<div id="openFile"><input type="file" id="inputFile" /></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
删除所有不必要的代码后,zipscan.js中的javascript:
function checkFiles()
{
//Check support for the File API support
if ( window.File && window.FileReader && window.FileList && window.Blob )
{
var fileSelected = document.getElementById( "inputFile" );
fileSelected.addEventListener( "change", handleFile, false );
}
else
{
alert( "Files are not supported" );
}
}
function handleFile( evt )
{
//Set wanted file object …Run Code Online (Sandbox Code Playgroud) 我在Angular 2项目中导入JSZip库时遇到了麻烦.我按照以下步骤更改项目配置:
1 - 使用NPM安装JSZip
npm install jszip --save
Run Code Online (Sandbox Code Playgroud)
2 - 按如下方式更改systemjs.config.js
var map = {
...
'jszip': 'node_modules/jszip/dist/jszip.min.js'
};
Run Code Online (Sandbox Code Playgroud)
3 - 在需要它的组件中导入依赖项
import JSZip from 'jszip';
Run Code Online (Sandbox Code Playgroud)
然后,我尝试使用主JSZip构造函数来附加一些文件,但我收到一个Web错误,指出构造函数未定义.此外,我使用的Typescript编辑器无法找到它的定义.
我错过了什么?
谢谢.
在我的网页中,用户应该上传压缩文件.在压缩文件中有2个文件:另一个zip文件和一个txt文件.在我的服务器上,收到zip后,我想解压缩zip文件以解压zip&txt文件,然后将这2个文件移动到预定义的文件夹中.我有一段代码提取zip文件,但数据似乎不正确.首先,当只有1个txt文件时,它解压缩了一个zip和2个txt文件.它创建了一个额外的"未定义"txt文件.此外,在我的txt文件中,它替换为原始数据,而是替换为以下文本:'[undefined] [undefined]'.
谁可以帮我这个事?以下是我的代码:
var JSZip = require('JSZip');
fs.readFile( filePath, function(err, data){
if (!err){
var zip = new JSZip();
JSZip.loadAsync(data).then(function(zip){
object.keys(zip.files).forEach(function(filename){
var content = zip.files[filename];
var dest = path + filename;
fs.writeFileSync(dest, content);
});
});
}
});
Run Code Online (Sandbox Code Playgroud) 我知道Chrome的"Uncommon Download"警告大致基于下载的常见程度,但具体条件是什么?
测量"共性"还是启发式?(例如,"zip文件总是被认为不常见")
如果测量,它是基于域,协议(例如http或dataurl),还是完整的特定URL?
很明显,文件或内容类型就是其中之一.在同一个网站上,我看到一个zip文件会触发警告,而PNG或JPG则不会.有没有办法让它不会触发通过JSZip创建和保存的zip文件?
我正在尝试使用jsZip创建一个zip文件.zip文件的内容是来自网络的图像.我创建了以下代码.但是当我运行它时,我得到的是一个22kb的空zip文件.
<html>
<head>
</head>
<body>
<script type="text/javascript" src="jszip.js"></script>
<script type="text/javascript" src="FileSaver.js"></script>
<script type="text/javascript" src="jszip-utils.min.js"></script>
<script>
var imgLinks=["url1", "url2", "url3"];
function create_zip()
{
var zip=new JSZip();
for(var i=0; i<imgLinks.length; i++)
{
JSZipUtils.getBinaryContent(imgLinks[i], function (err, data) {
if(err) {
alert("Problem happened when download img: " + imgLink[i]);
console.erro("Problem happened when download img: " + imgLink[i]);
deferred.resolve(zip); // ignore this error: just logging
// deferred.reject(zip); // or we may fail the download
} else {
zip.file("picture"+i+".jpg", data, {binary:true});
deferred.resolve(zip);
}
});
}
var …Run Code Online (Sandbox Code Playgroud) 我正在编写一些节点代码,并使用jszip压缩和解压缩一些文件.我知道如何压缩,但无法弄清楚如何解压缩或解压缩.stackoverflow上有几个链接不起作用.有人有任何解决方案?以下是我的尝试
var fs = require('fs');
var JSZip = require('jszip');
var zipName = "C:/test.zip";
var unzip = "C:/unzip";
fs.readFile(zipName, function (err, data) {
if (err) throw err;
var zip = new JSZip();
zip.folder(unzip).load(data);
});
Run Code Online (Sandbox Code Playgroud) 我使用以下代码将可下载的xml文件转换为zip,但文件大小仍然相同,压缩率显示为0%
var xmlcontent = "<?xml version='1.0' encoding='UTF-8'?><Body>";
xmlcontent += json2xml(data);
xmlcontent += "</Body>";
var zip = new JSZip();
zip.file("test1.xml", xmlcontent);
zip.generateAsync({ type: "blob" })
.then(function (content) {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var url = window.URL.createObjectURL(content);
a.href = url;
a.download = "test.zip";
a.click();
window.URL.revokeObjectURL(url);
});
Run Code Online (Sandbox Code Playgroud)
压缩的原因是为了减少客户端检索到的文件的大小,但显然对它没有影响。请提出一种减小文件大小的方法。
我有一个字符串数组,应将其写入 .txt 文件。另外,我需要使用 JSZip 将生成的 .txt 文件压缩为 .zip 格式。在客户端,我能够使用该字符串数组生成“文本/纯文本”Blob,然后使用 JSZip 将此 Blob 压缩为 .zip 格式。我需要使用 Node.js 在服务器端执行相同的操作,但我意识到 Blob 在 Node.js 中不可用。我尝试使用“Buffer”而不是 Blob,并且得到了一个压缩为 .zip 的二进制文件;我是node.js的初学者,无法理解Buffer的概念。我可以在 Node.js 中创建 Blob 吗?或者我可以使用 node.js Buffer 执行相同的操作吗?
在客户端,我可以从 Blob 内容生成 zip 文件,如下所示,
//stringsArray is an array of strings
var blob = new Blob( stringsArray, { type: "text/plain" } );
var zip = new JSZip();
zip.file( 'file.txt' , blob );
zip.generateAsync( { type: 'blob', compression: 'DEFLATE' } )
.then( function( zipFile ){
//do something with zipFile
}, …Run Code Online (Sandbox Code Playgroud) 我有一个表单,允许用户选择要上传的 zip 文件。我试图在将这个 zip 文件上传到我的服务器之前对其进行客户端验证,因为上传可能需要一段时间,而且我还想节省带宽。
我需要做的就是读取 zip 中应包含的 .csv 文件,并验证 zip 中是否存在 .csv 引用的其他文件。为了实现这一目标,我尝试使用JSZip。
如果存档很小,这效果很好。如果存档很大(使用约 500MB 文件进行测试),则 Chrome 会崩溃。
var reader = new FileReader();
reader.onload = function (e) {
console.log("Got here!");
// Read csv using JSZip, validate zip contents
};
reader.readAsArrayBuffer(file);
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我注释掉了 onload 回调中的所有逻辑,并验证这些逻辑都不会导致崩溃。我发现 Chrome 在调用 onload 回调之前就崩溃了。
我已经在 FireFox 中用更大的 zip 文件对此进行了测试,效果很好。
jszip ×10
javascript ×7
filereader ×2
html ×2
node.js ×2
unzip ×2
zip ×2
angular ×1
compression ×1
download ×1
security ×1
typescript ×1
xml ×1