Почему при загрузке файла fetch продолжает обрезаться, а загрузка вручную в браузере - нет? - PullRequest
1 голос
/ 22 апреля 2019

Я использую fetch для загрузки файла, и при использовании fetch я сталкиваюсь с проблемой, которая не возникает, когда я загружаю файл вручную в браузере. Может я что-то здесь упускаю?

код выглядит так:

fetch(link).then(res => {
  let writeStream = fs.createWriteStream(destinationPath)
  writeStream.on('close', callback);

  res.body.pipe(writeStream)
})

Много раз поток просто зависает, и поэтому я добавил settimeout для повторной попытки загрузки. иногда требуется много попыток, чтобы закончить. Это не происходит при использовании браузера (если это происходит очень редко). Есть ли какие-то настройки, которые я должен настроить для правильной работы fetch? или мой код неверен?

Пример файла загрузки: ссылка

ОБНОВЛЕНИЕ : Забыл упомянуть, что я использую функцию извлечения узла на сервере.

Спасибо!

1 Ответ

1 голос
/ 22 апреля 2019

Если загрузка работает в панели браузера, это не значит, что она также работает с fetch.Их сервер должен разрешать запросы перекрестного происхождения, если вы используете fetch.

При использовании fetch вы можете проверить статус ответа с помощью объекта ответа.

Имейте в виду, что fetch не делаетработает в узле, и 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
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...