javascript - 使用 JavaScript 提取 Sketch 文件

标签 javascript node.js unzip jszip

目的是提取.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

由于您已经在服务器上工作,没有什么能阻止您使用操作系统的命令行工具,例如 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);
})

关于javascript - 使用 JavaScript 提取 Sketch 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47987544/

相关文章:

javascript - 项目单独显示

javascript - 当我的变量中有 '#' 时,为什么字符串不能正确传递到服务器?

javascript - 与在 JavaScript 中单独定义变量相比,将变量与逗号一起定义有好处吗?

bash - (unix shell 脚本)解压多个 zip 文件,在 zip 文件名后重命名解压文件

javascript - 错误 : Permission denied to access property 'document'

node.js - Heroku Autoscale 与 Node.js

node.js - 无法更新 Sails.js 模型实例中的属性

django - 在 Django 中将 JSON 数据从响应传递到请求

python - Python 文件权限中的 Zipfile

java - 如何用Java在大型机上解压PKZIP压缩文件?