NodeJS транслирует удаленный файл, архивирует его и хранит локально - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь загрузить удаленный файл, сжать его и сохранить локально на сервере узла.Я использую узел 8.11.4

Код выполняется правильно, если я его не заархивировал, но когда я заархивировал его, он перестает работать

Итак, следующий код работает

const fs = require('fs')
const https = require('https')

const url = remoteurl // a url that is pointing to a pdf file
https.get(url, (res) => {
  res.pipe(fs.createWriteStream("./local-pdf.pdf"))
  .on('finish', () => {
     console.log('you finished')
   })
})

Приведенный выше код будет правильно сохранять файл PDF.

Но когда я пытаюсь заархивировать его в потоке, например,

const fs = require('fs')
const zlib = require('zlib')
const https = require('https')

const url = remoteurl
https.get(url, (res) => {
  res.
   pipe(zlib.createGzip())
   pipe(fs.createWriteStream("./local-zip.zip"))
  .on('finish', () => {
     console.log('you finished')
   })
})

Он генерирует файл ZIP,но когда я открываю его, он говорит, что это недопустимый zip-файл.Хотя, если я заархивирую файл с помощью zlib локально, он будет работать нормально

Есть ли что-то, что я должен сделать на конвейере?

1 Ответ

0 голосов
/ 28 ноября 2018

Немного сложно понять, что не работает для вас.В вашем коде есть несколько опечаток, поэтому он не должен запускаться в первую очередь, но если вы исправите эти опечатки, он прекрасно работает для меня.

Какой программой вы пользуетесь, пытаясь открыть .zip?

(Между прочим: возможно, стоит подумать об окончании файла на .gz, потому что это подходящее окончание файла для сжатых gzip данных)

...