ReactJS - Descargar archivo pdf desde servidor local en docker

 
Vista:
sin imagen de perfil

Descargar archivo pdf desde servidor local en docker

Publicado por Eduardo Godinho (1 intervención) el 26/01/2023 13:29:04
Necesito ayuda con un problema, tenemos un sistema de download de archivos pdf y execel, la ruta a la que realizamos el download es dinamica que viene desde del servidor. funcionaba perfectamente hasta que hubo un cambio en un parametro por el lado del backend el (back end esta hecho con django) por si acaso.

Y yo tenia que agregar esta ruta en el front, De ahi comenzo los problemas.. Ya que cuando le doy a descargar.. me abre una página en blanco, (about:blank#blocked) El problema de todo esto, esque no me aparece ingun error en la consola o de red, entonces estoy como ciego tratando de resolver algo por el lado del front y ni se si realmente es un problema de front o con el lado del backend.

Todas estas pruebas estoy haciendo Localmente con un servidor Docker.

O Select para a chamada da funcao.

1
2
3
4
5
<DropdownButton id="dropdown-basic-button" variant="secondary" title="Descargar">
                                  <Dropdown.Item onClick={handlePDF}>Descargar PDF</Dropdown.Item>
                                  <Dropdown.Item onClick={handleExcel}>Descargar Excel</Dropdown.Item>
                                </DropdownButton>
                              </Col>

Essas sao a funcoes que estao sendo chamadas

1
2
3
4
5
const handlePDF = () => {
if(type === '1' || type === '4')
  showAccountingPDF({ data: `${uuid}/?society=${society}${date}&rule=${rule}`, type });
if(type === '2' || type === '3')
  showAccountingPDF({ data: `${uuid}/?society=${society}${date}&rule=${rule}&report_type=${typeFinancialSituation}`, type });


1
2
3
4
5
const handleExcel = () => {
if(type === '1' || type === '4')
  showAccountingExcel({ data: `${uuid}/?society=${society}${date}&rule=${rule}`, type });
if(type === '2' || type === '3')
  showAccountingExcel({ data: `${uuid}/?society=${society}${date}&rule=${rule}&report_type=${typeFinancialSituation}`, type });

Este é o saga que tiene la función generadora que executa el download de la función, con la ruta dinamica de la api.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function* showAccountingPDF({ payload }) {
  try {
    const { data, type, money } = payload
    const accessToken = cookieHandler().getAccessToken();
    const link = document.createElement('a');
    if(type === "1")
      link.href = `${process.env.REACT_APP_SERVICE_URL}api/v1/modules/module/balance8columns/export/pdf/${data}&token=${accessToken}`;
    if(type === "2")
      link.href = `${process.env.REACT_APP_SERVICE_URL}api/v1/modules/module/financial-situation/export/pdf/${data}&token=${accessToken}`;
    if(type === "3")
      link.href = `${process.env.REACT_APP_SERVICE_URL}api/v1/modules/module/status-results/export/pdf/${data}&token=${accessToken}`;
    if(type === "4")
      link.href = `${process.env.REACT_APP_SERVICE_URL}api/v1/modules/module/cashflow/export/pdf/${data}&token=${accessToken}`;
    link.setAttribute('download', 'report.pdf');
    document.body.appendChild(link);
    link.click();
    yield;
  } catch (e) {
    // TODO: handle error
    console.log(e);
  }
}




Si alguien tiene alguna forma solucionar esto lo agradezco.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder