Вызов функции PHP из ajax — скачать файл

Я пытаюсь использовать Ajax & PHP функция для загрузки файла.
Моя цель — использовать Ajax для отправки переменных из Datatable в функцию PHP.
и функция PHP будет искать файл в моем хранилище и загружать его.

Это не работает. когда я использую URL, я могу скачать файл. но когда я запускаю его с AJAX, он не работает.

Я хочу создать функцию PHP, которая будет получать имя файла и генерировать ссылку для загрузки кнопки HTML. (который отображается в таблице данных)

Ajax:

       //download button
$('#files').on('click', 'button#download',function (ref) {
var data = table.row($(this).parents('tr')).data();
var file_name=data.filename;
ref.preventDefault();
//  alert(data.filename);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'POST',
datatype:'binary',
url: "/download?"+data.filename,
success: function(result){
console.log(result);
}
});
});

PHP:

    public function getDownload(){
$tmpfile='1520001503b1.png';
$sd= DB::table('files')
->where('filename',$tmpfile)
->get();


$myFile = public_path("uploads/1520001503b1.png");
$headers = ['Content-Type: application/png'];
$newName = 'bla'.time().'.png';


return response()->download($myFile, $newName, $headers);

}

маршрут:

Route::match(['get', 'post'], '/download','FilesController@getDownload');

0

Решение

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

location.href = 'download.php';
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]