Загрузка файла с сервера, но по-прежнему выдается ошибка «Невозможно получить» и не происходит внутри функции fetch.then - PullRequest
0 голосов
/ 27 апреля 2020

Это ошибка, которую я получаю при загрузке файла с сервера узла. enter image description here

и файл загружается, но имя неверно, что я предоставляю, потому что выборка не обращается к разделу ответа. enter image description here

Это функция загрузки файла, которая извлекает файл .pdf с сервера узла.

downloadFileHandler = async (name, path) => {
this.setState({ cvDownloadLoading: true });
try {
  const response = await fetch(
    `${process.env.REACT_APP_SERVER_URL}/${path}`
  );
  if (!response.ok) throw response;
  const buffer = await response.arrayBuffer();
  const url = window.URL.createObjectURL(new Blob([buffer]));
  const element = document.createElement('a');
  element.style.display = 'none';
  element.href = url;
  element.setAttribute('download', name);
  document.body.appendChild(element);
  element.click();
  this.setState({ cvDownloadLoading: false });
  window.URL.revokeObjectURL(element.href);
  document.body.removeChild(element);
} catch (err) {
  this.setState({ cvDownloadLoading: false });
  if (err.name === 'AbortError') {
  } else {
    try {
      // const body = await err.json();
      console.log(err);
    } catch (e) {
      console.log('catch', e);
    }
  }
}

};

Серверная часть на узле установлены «cors», и приложение использует это.

const cors = require('cors');
app.use(cors());

И статически обслуживает файлы следующим образом.

app.use('/data', express.static(path.join(__dirname, 'data')));

РЕДАКТИРОВАНИЕ: Теперь я попытался загрузить файл изображения, и он загрузился без любая проблема. Это проблема с загрузкой PDF или любого файла, а не изображения (возможно). Кто-нибудь может объяснить?

1 Ответ

0 голосов
/ 27 апреля 2020

Я думаю, что вы должны настроить параметры Cors и добавить свой клиентский домен в поле источника. Попробуйте вот так:

const corsOptions = {
   origin: 'http://localhost:8080'
};
// and then
app.use(cors(corsOptions));

Вы можете увидеть этот пример в разделе Настройка CORS здесь https://expressjs.com/en/resources/middleware/cors.html

...