使用 JavaScript 提取 Sketch 文件
Extract Sketch file using JavaScript
目的是提取 .sketch
文件的内容。
我有一个名为 myfile.sketch 的文件。将文件扩展名重命名为 myfile.zip 并在 Finder 中提取相同文件后,我可以查看其中的文件。我尝试通过将文件扩展名重命名为 .zip
在服务器上使用 Node.js 执行相同的操作。我无法提取文件,而是在文件中找到了一些 ZIP 文件。
var oldPath = __dirname+'/uploads/myfile.sketch',
newPath = __dirname+'/uploads/myfile.zip';
fs.rename(oldPath, newPath, function (err) {
console.log('rename callback ', err);
});
是否可以使用 JSzip 等框架提取非 ZIP 文件?
由于 .sketch
文件本质上是 ZIP 文件,因此扩展名无关紧要。任何能够解压缩 ZIP 文件的工具都可以。
您可以使用 file
命令验证这一点:
$ file myfile.sketch
myfile.sketch: Zip archive data, at least v1.0 to extract
由于您已经在服务器上工作,没有什么可以阻止您使用 OS 的命令行工具,例如 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);
})
目的是提取 .sketch
文件的内容。
我有一个名为 myfile.sketch 的文件。将文件扩展名重命名为 myfile.zip 并在 Finder 中提取相同文件后,我可以查看其中的文件。我尝试通过将文件扩展名重命名为 .zip
在服务器上使用 Node.js 执行相同的操作。我无法提取文件,而是在文件中找到了一些 ZIP 文件。
var oldPath = __dirname+'/uploads/myfile.sketch',
newPath = __dirname+'/uploads/myfile.zip';
fs.rename(oldPath, newPath, function (err) {
console.log('rename callback ', err);
});
是否可以使用 JSzip 等框架提取非 ZIP 文件?
由于 .sketch
文件本质上是 ZIP 文件,因此扩展名无关紧要。任何能够解压缩 ZIP 文件的工具都可以。
您可以使用 file
命令验证这一点:
$ file myfile.sketch
myfile.sketch: Zip archive data, at least v1.0 to extract
由于您已经在服务器上工作,没有什么可以阻止您使用 OS 的命令行工具,例如 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);
})