私はユーザーにファイルをダウンロードしてもらいたいのですが、実際にはajaxを経由する必要はありませんが、見つけられた最も簡単な方法でした。ajaxコールでlaravelのダウンロードを返すことはできません
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>");
});
ここ
は私が呼んでいるコントローラからの私の方法があります
私のルートは、パネルと呼ばれるグループ内にあります:
Route::get('/download/', ['as' => 'files.download', 'uses' => 'Panel\[email protected]']);
私の最初の質問です:この呼び出しをajaxからlaravelのダウンロード応答にすることは可能ですか?
2番目の質問:ララベルコントローラへの経路をajaxコールで置き換える方法がわかりません。
ありがとうございました!
jQueryのajax関数はまったく必要ありません。 – Jeffrey
ありがとうございます、しかし、私はパラメータとしてディレクトリを渡す必要があります、これはなぜ私はajaxを使用しています。 私はあなたのようなリンクにこのURLを渡そうとしています。/download/public/painel/clients/4/filename.pdf 私のルートには次のようなものがあります:Route :: ( 'ファイル'ダウンロード '、'使用 '=>'パネル\ ClientController @ダウンロード ']); しかし、例外が見つからないページがあります。 –
@GabrielAugustoあなたは正しいルートを呼んでいると確信していますか?もしそうなら、あなたは既存のファイルに誘導していますか? –