#javascript #node.js #fetch
#javascript #node.js #выборка
Вопрос:
Я использую выборку для загрузки файла, и при использовании выборки я сталкиваюсь с проблемой, которая не возникает, когда я загружаю файл вручную в браузере. Может быть, я что-то здесь упускаю?
код выглядит следующим образом:
fetch(link).then(res => {
let writeStream = fs.createWriteStream(destinationPath)
writeStream.on('close', callback);
res.body.pipe(writeStream)
})
Много раз поток просто зависал, и поэтому я добавил settimeout для повторной загрузки. иногда требуется много попыток, чтобы завершить его. Этого не происходит при использовании браузера (если это происходит очень редко). Есть ли какие-либо настройки, которые я должен настроить, чтобы выборка работала здесь должным образом? или мой код неверен?
Пример файла для загрузки: ссылка
ОБНОВЛЕНИЕ: Забыл упомянуть, что я использую node-fetch на сервере.
Спасибо!
Комментарии:
1. Если это node.js , что такое
fetch
? Если это клиентский скрипт, что этоfs
такое?2. Я использую
node-fetch
пакет на сервере
Ответ №1:
Если загрузка работает в строке браузера, это не значит, что она также работает с выборкой. Их сервер должен разрешать перекрестные исходные запросы, если вы используете выборку.
При использовании выборки вы можете проверить статус ответа с помощью объекта response.
Имейте в виду, что fetch
это не работает в node и fs
не работает в браузере.
Проверьте статус выборки
fetch("https://bulkdata.uspto.gov/data/trademark/dailyxml/applications/apc190416.zip")
.then(res => {
console.log("download status:")
console.log(res.ok)
console.log(res.status)
return res
})
Комментарии:
1. Я не верю, что проблема заключается в перекрестных запросах происхождения. Файл загружается когда-нибудь. Проблема в том, что иногда часть загружается, а затем зависает перед завершением. Также я забыл упомянуть, что я использую пакет node-fetch