Загрузка PDF-файла НЕ работает в React.js веб-приложение с использованием firebase (работает в Excel)

# #reactjs #firebase #pdf

Вопрос:

Я создаю веб-приложение с помощью React.js. У меня есть несколько файлов excel и pdf в моем облачном хранилище firebase, и я хочу их загрузить. В моем компоненте Devize я извлекаю каждый файл из хранилища, и при нажатии на конкретный файл, который был нажат, он должен быть автоматически загружен. Логика загрузки файлов находится в моем компоненте загрузки. Если я попытаюсь загрузить файл excel, он отлично работает, но когда я пытаюсь загрузить файл pdf, на вкладке «Моя сеть» отображается, что мой запрос на сервер firebase был успешно выполнен с кодом 200, но браузер не запускает автоматическую загрузку. Я, кажется, не могу понять, почему это происходит. Ниже вы можете найти мой код:

 const Devize = () =gt; {  const dispatch = useDispatch();  const history = useHistory();  const [downloadUrl, setDownloadUrl] = useState('');  const searchTerm = useSelector(selectSearchTermDevize);  const devizeState = useSelector(selectDevizeState);  const searchResults = useSelector(selectSearchDevizeState);  const [startDownload, setStartDownload] = useState(false);   useEffect(() =gt; {  async function fetchTheData() {  try {  // Get devize  const res = await fetchDataFromStorage('devize');  dispatch(setDevizeState({ devize: [...res] }));  // Get echipamente  const echipamente = await fetchEchipamente();  if (echipamente) {  dispatch(setEchipamente({ echipamente: [...echipamente] }));  }  // Get numere  const nr = await getData();  dispatch(setNumere({ numere: [...nr] }));  } catch (err) {  console.log(err);  }  }  fetchTheData();  // Avoid multiple files download!  return () =gt; {  setDownloadUrl('');  };  }, []);   useEffect(() =gt; {  if (downloadUrl !== '') {  setStartDownload(true);  }  }, [downloadUrl]);   const handleDownload = async (e) =gt; {  try {  const url = await storage  .ref(`devize/${e.target.dataset.name}`)  .getDownloadURL();  setDownloadUrl(url);  } catch (err) {  console.log(err.message);  }  };   const downloadModel = async (e) =gt; {  try {  await storage  .ref('modele/DEVIZ.xlsx')  .getDownloadURL()  .then((url) =gt; setDownloadUrl(url));  } catch (err) {  console.log(err.message);  }  };   return (  lt;divgt;  lt;Header /gt;  lt;WrapperForUploadAndSearchDevizegt;  lt;SearchDevize /gt;  lt;WrapperForUploadModelCreateDevizegt;  lt;UploadDevize /gt;  lt;StyledModelDeviz onClick={downloadModel}gt;  lt;TextDevizgt;Descarca model deviz!lt;/TextDevizgt;  lt;/StyledModelDevizgt;  lt;StyledCreareDeviz onClick={() =gt; history.push('/creare-deviz')}gt;  lt;TextDevizgt;Creare Deviz nou!lt;/TextDevizgt;  lt;/StyledCreareDevizgt;  lt;/WrapperForUploadModelCreateDevizegt;  lt;/WrapperForUploadAndSearchDevizegt;   lt;WrapperForResultsDevizegt;  {searchTerm === ''  ? devizeState.map((deviz, index) =gt; (  lt;DevizElement  data-name={deviz.name}  key={index}  onClick={handleDownload}  gt;  {deviz.name}  Created at: {deviz.createdAt.split('-')[0]}-  {deviz.createdAt.split('-')[1]}  lt;/DevizElementgt;  ))  : searchResults.map((res, i) =gt; (  lt;DevizElement data-name={res.name} key={i} onClick={handleDownload}gt;  {res.name}  Created at:{res.createdAt.split('-')[0]}-  {res.createdAt.split('-')[1]}  lt;/DevizElementgt;  ))}   {startDownload ? lt;DownloadComponent downloadSrc={downloadUrl} /gt; : null}  lt;/WrapperForResultsDevizegt;  lt;/divgt;  ); };  export default Devize;   const DownloadComponent = ({ downloadSrc }) =gt; {  return (  lt;WrapperIFramegt;  lt;iframe src={downloadSrc} /gt;  lt;/WrapperIFramegt;  ); };  export default DownloadComponent;