система загрузки файлов docx с использованием laravel - vuejs - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу отправить клиенту файл docx в ответ на запрос get:

Вот код контроллера Laravel:

public function file($id)
{
    $dlink = resource_path('temp/' . $id . '.docx');

    $headers = [
        'Content-Type' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    ];
    return response()->download($dlink, $id . '.docx', $headers);
}

Код VueJS:

axios.get(`${location.protocol}//${location.host}/api/download/${response.data}`,
              { responseType: "arraybuffer" }
            )
            .then(response => {
              this.downloadFile(response);
            })
            .catch(err => alert(err));

downloadFile(response) {
    var newBlob = new Blob([response.body], {
        type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    });
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(newBlob);
        return;
    }
    const data = window.URL.createObjectURL(newBlob);
    var link = document.createElement("a");
    link.href = data;
    link.download = "resume.docx";
    link.click();
    setTimeout(function() {
        window.URL.revokeObjectURL(data);
    }, 100);
}

Ошибка не отображается.но загружает поврежденный файл docx размером 9 байт.

1 Ответ

0 голосов
/ 27 сентября 2019

изменив response.body на response.data сделал работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...