[英]Cannot return a laravel download via ajax call
我希望用户下载文件,它实际上并不需要通过Ajax进行下载,但这是我发现的最简单的方法,但是它不起作用。
这是我正在调用的Controller中的方法:
public function download(Request $request)
{
$dir = $request->get("directory");
return response()->download($dir);
}
这是我的ajax函数:
function download(diretorio) {
$.ajax({
url: "/panel/download",
data: {_token: jQuery(".token").val(), diretorio: diretorio},
success: function(e) {
}
}).done(function(e) {
});
}
在此追加内部调用此函数:
$('#uploads tbody').append("<tr><td>" + fileName + "</td> <td><a class='btn btn-success' href='' onclick=\"download('" + item + "')\">Download</button></td></tr>");
});
这是我的路线,它位于一个名为panel的组内:
Route::get('/download/', ['as' => 'files.download', 'uses' => 'Panel\ClientController@download']);
我的第一个问题是:是否可以将这个调用从ajax调用为laravel的下载响应?
第二个问题:我不知道如何替换到laravel控制器的路由的ajax调用,可能吗?
谢谢!
对的,这是可能的。 不过,这仅与Laravel有关。 试试这个例子:
HTML :(只需在此处调用您的GET路线)
<a href="/download/">download file(s)</a>
下载功能
public function download()
{
// $pathToFile : set to what you need
return Response::download($pathToFile);
}
由于目录路径参数带有斜杠,因此我认为路由需要其他参数。 因此,我决定不传递整个目录路径,而仅传递ID和文件名。 所以我的路线变成了这样:Route :: get('/ download / {id} / {fileName}',['as'=>'files.download','uses'=>'Painel \\ ClienteController @ fazerDownload'] );
而且有效。 感谢您的回答和努力!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.