download em reagir

votos
0

eu tenho uma API RESTful que eu criei usando Laravel, esta API como esta:

http://127.0.0.1:8000/api/file/pdf/{id}

e este é meu código para download:

public function pdfDownload($id){
       $pdf = Cv::findOrfail($id);
       return Storage::download('public/pdf/'.$pdf->pdf);
    }

é trabalhado no carteiro, e também no navegador, ele é baixar diretamente o arquivo, mas com react.js, não é trabalho, esse meu código em reagir:

pdfDownload = (id) => {
        fetch(' http://127.0.0.1:8000/api/file/pdf/' + id, {
            method: 'get',
            headers: {
                Accept: 'application/octet-stream',
                'Content-Type': 'application/octet-stream'
            }
        }).then((res) => res.json());
    };

e eu chamar essa função no botão como este:

<Button color=primary onClick={() => this.pdfDownload(data.id)}>
                                            Download
                                        </Button>

O ID é corrigido, eu sou garantir isso, a minha pergunta é como eu posso baixar arquivo quando clicar nesse botão .. Thans ...

Publicado 20/10/2018 em 14:02
fonte usuário
Em outras línguas...                            


1 respostas

votos
-1

chamadas XHR não pode desencadear download do arquivo, a maneira como o navegador lida com ele. Você terá que imitar um download de arquivo usando o código javascript mesmo, usando algo como abaixo:

Referência

const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.pdf');
document.body.appendChild(link);
link.click();

Ou usar Arquivo pacote Saver, se você não se importa uma dependência extra.

FileSaver NPM

Respondeu 20/10/2018 em 14:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more