electron解压缩

本文档介绍了在Electron应用中如何使用adm-zip库进行文件解压缩的过程,包括遇到的primordials is not defined错误及解决方法。通过简单的开发步骤,展示了从创建桌面应用到实现拖拽和解压缩功能的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.unzip

网上看了文档看了例子,很简单的几句话,貌似挑不出毛病,但是我一写就报错

var fs = require("fs");
var unzip = require("unzip");

fs.createReadStream('archiver-unzip.zip').pipe(unzip.Extract({ path: 'unarchive' }));

我一运行,就报错,primordials is not defined
折腾了一天没折腾出来

2.adm-zip

于是我问了我的同事,发现我同事用的adm-zip

用法如下:

var adm_zip = require('adm-zip');
   //extracting archives  
var unzip = new adm_zip('adm/adm-archive.zip');  
 unzip.extractAllTo("adm/adm-unarchive/", /*overwrite*/true);

感人至深,成功了。

开发步骤

1.第一个桌面应用:
自行参考:https://electronjs.org/docs/tutorial/first-app
2.实现拖拽
3.实现解压

文档结构:
在这里插入图片描述
实现拖拽:
index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			#holder {
				border: 10px dashed #ccc;
				/* width: 300px; */
				height: 300px;
				margin: 20px auto;
			}
			#holder.hover {
				border: 10px dashed #333;
			}
        </style>
		<script>
			//Same as $(document).ready();
			function ready(fn) {
				if (document.readyState != 'loading') {
					fn();
				} else {
					document.addEventListener('DOMContentLoaded', fn);
				}
			}
			//When the page has loaded, run this code
			ready(function() {
				// prevent default behavior from changing page on dropped file
				window.ondragover = function(e) {
					e.preventDefault();
					return false
				};
				// NOTE: ondrop events WILL NOT WORK if you do not "preventDefault" in the ondragover event!!
				window.ondrop = function(e) {
					e.preventDefault();
					return false
				};
				var holder = document.getElementById('holder');
				holder.ondragover = function() {
					this.className = 'hover';
					return false;
				};
				holder.ondragleave = function() {
					this.className = '';
					return false;
				};
				holder.ondrop = function(e) {
					e.preventDefault();
					for (var i = 0; i < e.dataTransfer.files.length; ++i) {
						console.log(e.dataTransfer.files[i].path);
					}
					return false;
                };
               
            });
        </script>
	</head>
	<body>
        <div id="holder"></div>
        <button id="jieya">abc</button>
	</body>
</html>

实现解压缩:

 var test  = document.getElementById("jieya");
 test.onclick = function() {
     var adm_zip = require('adm-zip');
     var unzip = new adm_zip('abc.zip');  
     unzip.extractAllTo("adm-unarchive/", /*overwrite*/true);
 }

运行之后,完美解压缩

仅是示例,如有疑问,自行解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值