• Как скачать файл формата zip с сервера?

    @IUII2
    братишка, если тебе еще актуально, я долго страдал не понимал почему так, в запросе axios или fetch надо указывать { responseType: 'blob' }для конфига и будет тебе счастье!
    Все кто столкнется, ur wellcome

    например вот накидал тебе провайдер для запроса через axios
    const myNameProvider = {
      getDownloadDocs(idDocs: string): Promise<AxiosResponse> {
        return axios.get(`${VERS_API}/path/${id}/download-documents`, { responseType: 'blob' });
      },
    };


    соответственно в нужном месте чейнишь это дело
    myNameProvider.getDownloadDocs(id)
      .then((resp) => {
        downloadFile(resp);
      })
      .catach((error) => {
        // че хочешь делаешь с эррором
      });


    Ну а сам метод я накидал вот такой
    const downloadFile = (response: AxiosResponse): void => {
      const blob = new Blob([response.data], { type: response.headers['content-type'] });
      const url = URL.createObjectURL(blob);
      const link = document.createElement('a');
    
      link.href = url;
      link.download = `documents_${getCurrentDate()}.zip`;
      link.click();
      URL.revokeObjectURL(url);
    };


    не забывай учитывать какой у тебя mime файла, это я замокал под .zip, на самом деле смотри на свой формат header-е и подставляй нужный
    Ответ написан
    2 комментария