使用JavaScript提取草图文件

使用JavaScript提取草图文件,javascript,node.js,unzip,jszip,Javascript,Node.js,Unzip,Jszip,其目的是提取.sketch文件的内容 我有一个名为myfile.sketch的文件。将文件扩展名重命名为myfile.zip并在Finder中提取相同的文件扩展名后,我就可以查看其中的文件了。我尝试在服务器上使用Node.js将文件扩展名重命名为.zip,以执行相同的操作。我无法提取文件,而是在文件中得到了一些ZIP文件 var oldPath = __dirname+'/uploads/myfile.sketch', newPath = __dirname+'/uploads/myfile.z

其目的是提取
.sketch
文件的内容

我有一个名为myfile.sketch的文件。将文件扩展名重命名为myfile.zip并在Finder中提取相同的文件扩展名后,我就可以查看其中的文件了。我尝试在服务器上使用Node.js将文件扩展名重命名为
.zip
,以执行相同的操作。我无法提取文件,而是在文件中得到了一些ZIP文件

var oldPath = __dirname+'/uploads/myfile.sketch',
newPath = __dirname+'/uploads/myfile.zip';

fs.rename(oldPath, newPath, function (err) {
console.log('rename callback ', err);
});

是否可以使用像?

这样的框架将非ZIP文件提取为
。sketch
文件本质上是一个ZIP文件,扩展名无关紧要。任何能够解压ZIP文件的工具都可以工作

您可以使用
文件
命令验证这一点:

$ file myfile.sketch
myfile.sketch: Zip archive data, at least v1.0 to extract
由于您已经在服务器上工作,没有什么可以阻止您仅仅使用操作系统的命令行工具,如

像这样:

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
文件中的内容?
.sketch
文件不是基于图像的格式吗?.sketch文件中有一个内容包。。itt中的文件夹、图像和json文件说明了这一点。。我应该在哪里提到要提取的文件的目录?现在,我已将文件解压缩到根文件夹:(您可以通过运行
unzip-h
manunzip
来获取所有命令行选项。您要查找的参数是
-d
。如果您觉得我的答案对您有帮助,您可以。@herrbischoff我正在使用
jsZip
解决方案来提取草图文件,但我不确定将其解压缩/提取到哪里输出。)ed内容。我看到了
jsZip
官方API,但找不到如何最终输出最终内容。我可以在控制台中看到bugger输出,但在执行
console.log()
时,却不知道如何将其输出到任何文件夹。@MuhammadHannan:
fs.write()
fs.writeFile()