#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.