2017-12-27 24 views
1

.sketch 파일의 내용을 추출하는 것이 목적입니다.JavaScript를 사용하여 스케치 파일 추출

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); 
}); 

JSzip 같은 프레임 워크를 사용하여 비 ZIP 파일을 추출 할 수 있습니까?

+0

그냥 내가 바로 이해 확인하기 위해, 당신은 내용을 읽는 방법에 대한 요구하고 '.sketch' 파일 안에 있습니까? '.sketch' 파일이 이미지 기반 형식이 아닌가요? – Jeffrey

+0

.sketch 파일에는 내용물 패키지가 있습니다. 폴더, 이미지 및 json 파일이 있습니다. –

답변

2

.sketch 파일은 본질적으로 ZIP 파일이므로 확장자는 중요하지 않습니다. ZIP 파일의 압축을 풀 수있는 모든 도구가 작동합니다.

당신은 file 명령으로이를 확인할 수 있습니다 : 당신이 이미 서버에서 작업하는 것처럼

$ file myfile.sketch 
myfile.sketch: Zip archive data, at least v1.0 to extract 

, 단지 unzip 같은 OS의 명령 행 도구를 사용에서 당신을 중지 아무것도 없다. 이처럼

:

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); 
}) 
+0

감사합니다.이 파일은 어디에서 추출해야합니까? 이제 파일을 루트 폴더에 압축을 풉니 다. ( –

+0

'unzip -h' 또는'man unzip'을 실행하여 모든 명령 행 옵션을 얻을 수 있습니다. 찾고있는 인수는'-d'입니다. – herrbischoff

+0

내 대답이 당신을 도왔다. 내 대답을 받아 들일 수있다. (http://meta.stackexchange.com/a/5235). – herrbischoff