@jazzus

Как вызвать загрузку файла в Vue.JS?

Переношу шаблон из blade Laravel во Vue.
Есть ссылка в темплейте, которая должна загружать файл:

<button @click="DownloadFile(id, 1)" class="btn btn-light btn-sm" >Скачать</button>


И метод в скрипте:
DownloadFile(id, type) {
    fetch(`/test/${id}/${type}/download`, {
        method: 'get'
    })
},


Id, type – параметры которые идут в роут.
В vue загрузки файла не происходит. Ошибок в консоли нет. Роут и контроллер правильный. Если ссылку вручную сформировать файл загружается.
Скорее всего проблема в том, что VUE запрос делает в фоне и поэтому в браузере нет реакции. Как вызвать загрузку файла в Vue? В сети не нашел ответ, а данные системы я только начал изучать.
  • Вопрос задан
  • 3144 просмотра
Решения вопроса 1
@vism
Так делает я.
dachserLabelDownload() {
    window.open('{!! route('reports.dachserLabelPdf', ['renderType' => App\Components\Documents\Pdf\PdfDocumentAbstract::RENDER_TYPE_DOWNLOAD]) !!}' + '?date=' + this.dachserCsvReport.date)
},
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@jazzus Автор вопроса
Возникла идея просто сформировать ссылку в шаблоне vue компонента. Которая будет также вызывать роут и загружать файл:

<a v-bind:href="'/test/'+file.id+'/1/download'" class="btn btn-light btn-sm mr-1 mt-2">Скачать</a>


Скорее всего это велосипед и есть нормальный способ вызывать загрузку файла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы