Загрузка файла Zip в ** laravel 5.4 ** из публичного каталога с использованием Ajax - PullRequest
0 голосов
/ 10 января 2019

В моем приложении laravel в моем общедоступном пути есть zip-файл. Я хочу скачать его с помощью ajax, а не возвращать zip-файл и выдать ошибку, которая показана на рисунке. Всем поможет решить эту проблему заранее.

$files = glob(public_path('uploads/download-images'));
            \Zipper::make(public_path('uploads/product_images.zip'))->add($files)->close();
            return response()->download(public_path('uploads/product_images.zip'));

это ajax

var join_selected_values = allVals.join(",");
            $.ajax({
                url: $(this).data('url'),
                type: 'POST',
                data:'_token = <?php echo csrf_token() ?>',
                data: 'ids='+join_selected_values,
                success: function (data) 
                {
                    window.location = data;
                    alert('Seccussfully Downloaded');
                },
                error: function (data) {
                    alert(data.responseText);
                }
            });

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Насколько я понимаю, вы не можете вернуть ответ с помощью Ajax-вызовов. Обходной путь - не использовать ajax-запрос для загрузки. Просто сделайте традиционный запрос. Поскольку он возвращает ответ о загрузке, браузер автоматически откроет диалоговое окно загрузки, поэтому оно будет похоже на отсутствие обновления.

0 голосов
/ 10 января 2019

Я не уверен, но это может иметь какое-то отношение к тому, что вам нужно установить header configuration для ответа. Вы, конечно, должны изменить тип контента на желаемый. Надеюсь, это поможет.

{
    $headers = [
        'Access-Control-Allow-Origin' => '*',
        'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, PATCH, DELETE',
        'Access-Control-Allow-Headers' => 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization , Access-Control-Request-Headers',
        'Content-Type' => 'application/pdf'
        ];
    return response()->download(filepathHere, nameHere, $headers);
}

Также убедитесь:

Symfony HttpFoundation, который управляет загрузкой файлов, требует, чтобы загружаемый файл имел имя файла ASCII.

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