Premiere pro文件(.prproj)是xml的压缩文件。如果我在Mac上使用unzip实用程序,则可以将其解压缩。但是当我尝试在节点上执行此操作时,我不会成功。
我已经在npm上尝试了一些流行的解压缩模块,但是没有一个起作用。
示例:
const decompressUnzip = require('decompress-unzip')()
const main = async () => {
const file = fs.readFileSync(path.join(__dirname, 'test-project.prproj'))
console.log(file) // <Buffer 1f 8b 08 00 00 00 00 00 00 0a ec bd 6d 93 9c 38 b6 2e fa 79 f6 af c8 e8 1b d1 fd e5 90 c5 fb 4b bb a7 3b ec 2a 7b ba ce 94 db 15 ae 6a f7 39 e7 ce 8d ... >
const files = await decompressUnzip(file)
console.log(files) // []
}
main()
我相信1f 8b 08 00 00
是gzip,不确定是否会有所作为。
这是文件https://www.mediafire.com/file/uzw7as8hntokst2/test-project._prproj/file
答案 0 :(得分:2)
1f 8b 08
是gz压缩文件的开头。 decompress-unzip
是用于解压缩zip文件而非gz压缩数据的模块。
您可以使用内置的zlib.gunzip节点来解压缩该数据。
const fs = require('fs')
const zlib = require('zlib')
const path = require('path')
function main () {
const file = fs.readFileSync(path.join(__dirname, 'test-project.prproj'))
const files = zlib.gunzipSync(file)
console.log(files.toString())
}
main()
作为anyc解决方案:
const { promisify } = require('util')
const readFile = promisify(require('fs').readFile)
const gunzip = promisify(require('zlib').gunzip)
const path = require('path')
async function main () {
const file = await readFile(path.join(__dirname, 'test-project.prproj'))
const files = await gunzip(file)
console.log(files.toString())
}
main()