Доступ к объекту из ответа сервера при использовании вызова yield для файла BLOB-объекта - PullRequest
0 голосов
/ 04 мая 2020

Поэтому я пытаюсь позвонить на сервер, чтобы получить файл PDF, который работает, когда файл существует. Но когда нет файла, я получаю ответ 404 с сервера. Мне нужно получить доступ к этому состоянию в результате объекта. Проблема в том, что когда BLOB пытается загрузить файл и не находит файл, он не предоставляет мне результат с сервера, а вместо этого говорит следующее:

TypeError: Не удалось выполнить команду createObjectURL на «URL»: не найдено ни одной функции, которая бы соответствовала предоставленной подписи.

Если я немного настрою ее, появится сообщение «Ошибка при загрузке файла». Но мне действительно нужен статус из ответа сервера из-за отображения правильной информации, если файл не существует или если это ошибка сервера. Из-за конфиденциальных данных я не могу скопировать вставить результат с сервера здесь. Но он показывает результат: {statusCode: 404 "} в объекте.

Это мой код:

export function* getInvoicePDFWorkerSaga(arg) {
  const {
    organizationNumber, agreementId, invoiceNumber,
  } = arg;
  try {
    const blob = yield call(invoices.getInvoicePDF, organizationNumber, agreementId, invoiceNumber);
    const blobUrl = URL.createObjectURL(blob);
    downloadFile(blobUrl, `invoice_${invoiceNumber}`, 'pdf');
  } catch (e) {
    yield put(actions.getInvoicePDFFailedAction(invoiceNumber, formatError(e)));
    const retry = yield call(RetryPrompt);
    if (retry) {
      yield call(getInvoicePDFWorkerSaga, arg);
    }
  }
}


getInvoicePDF: (organizationNumber, agreementId, invoiceNumber) => (
    getBlob({ url: ENDPOINTS.getInvoicePDF(organizationNumber, agreementId, invoiceNumber) })
  ),
...