目的是提取<form name="profile">
<div>
<span id="provinceWarning" class="alert"></span>
</div>
<div>
<select id="province" name="province">
<option value="">Select Province</option>
<option value="AB">Alberta</option>
</select>
</div>
</form>
<button id="btnSubmit" onclick="func();">Click Me</button>
文件的内容。
我有一个名为myfile.sketch的文件。在将文件扩展名重命名为myfile.zip并在Finder中提取相同内容时,我可以查看其中的文件。我尝试使用Node.js在服务器上执行相同操作,方法是将文件扩展名重命名为.sketch
。我无法提取文件,而是在文件中找到了一些ZIP文件。
.zip
是否可以使用JSzip等框架提取非ZIP文件?
答案 0 :(得分:2)
由于.sketch
文件本质上是一个ZIP文件,因此扩展名无关紧要。任何能够解压缩ZIP文件的工具都可以使用。
您可以使用file
命令验证这一点:
$ file myfile.sketch
myfile.sketch: Zip archive data, at least v1.0 to extract
当您正在使用服务器时,没有什么能阻止您使用操作系统的命令行工具,例如unzip
。
像这样:
const util = require('util');
const exec = util.promisify(require('child_process').exec);
async function unzip() {
const filename = 'myfile.sketch'
const { stdout, stderr } = await exec('unzip ' + filename);
console.log('stdout:', stdout);
console.log('stderr:', stderr);
}
unzip();
使用JSZip也很简单:
var fs = require('fs');
var JSZip = require('jszip');
new JSZip.external.Promise(function (resolve, reject) {
fs.readFile('myfile.sketch', function(err, data) {
if (err) {
reject(e);
} else {
resolve(data);
}
});
}).then(function (data) {
return JSZip.loadAsync(data);
})