Nodejs zlib gunzip "ошибка неверного типа блока" на Windows, но не на Mac - PullRequest
0 голосов
/ 03 августа 2020

вот мой код, я читаю кучу фрагментов файлов, объединяю их вместе, а затем архивирую:

const decompress = (buffer) => new Promise((resolve, reject) => {
  zlib.gunzip(buffer, (err, decompressed) => {
    if (err) {return reject(err)}
    resolve(decompressed)
  })
})
const chunkFileNames = fs.readdirSync(chunksFolderPath)
let compressedFile = Buffer.from('')
for (const chunkFileName of chunkFileNames) {
  const chunkFilePath = path.join(chunksFolderPath, chunkFileName)
  const chunk = fs.readFileSync(chunkFilePath)
  compressedFile = Buffer.concat([compressedFile, chunk])
}
const decompressedFile = await decompress(compressedFile) // throws

Ошибка:

Ошибка: недопустимый тип блока в Zlib.zlibOnError [as onerror] (zlib. js: 170: 17)

Я сжимаю и разбиваю файл на linux. Когда я запускаю тот же код на mac / linux, он распаковывается без ошибок. Но когда я запускаю тот же код на windows, я получаю эту ошибку.

В чем может быть проблема? Как мне отладить это? Файлы фрагментов кажутся неизменными, когда я перемещаю папку на свою windows виртуальную машину, но, возможно, windows каким-то образом их изменяет?

1 Ответ

0 голосов
/ 04 августа 2020

Возможно, вам потребуется указать кодировку 'binary'. Подобные проблемы на Windows пахнут преобразованиями в конце строки.

...