Запретить запись файла в nodejs

#node.js #createwritestream

#node.js #createwritestream

Вопрос:

Я хочу загрузить файл из nodejs и записать его. В настоящее время я использую axios и createWriteStream. Он пишет нормально. Но я хочу обрабатывать запись, когда файл большой. Когда размер файла превышает 5 МБ, я хочу, чтобы он возвращал сообщение «файл большой» и запрещал запись файла.

Как мне обрабатывать большие файлы в createWriteStream? спасибо вам.

вот мой код:

 async function downloadImage () {  
  const url = 'https://example.com/file.zip'
  const path = Path.resolve(__dirname, 'files', 'file.zip')
  const writer = Fs.createWriteStream(path)

  const response = await Axios({
    url,
    method: 'GET',
    responseType: 'stream'
  })

  response.data.pipe(writer)

  return new Promise((resolve, reject) => {
    writer.on('finish', () => {
      resolve({ path })
    })
    writer.on('error', () => {
      fs.unlink(path)
      reject(new Error('Cant download!'))
    })
  })
}
  

Комментарии:

1. Вы можете попробовать сначала отправить запрос HEAD и получить заголовок Content-length (если сервер его поддерживает).

2. я не хочу использовать заголовок Content-length, потому что это опция. и это все еще ошибка в axios: github.com/axios/axios/issues/1491 . Поэтому я хочу проверить байтовую запись при использовании createWriteStream.