Reputation: 13192
My html code is like this :
<a href="javascript:;" onclick="showAjaxPdf('{{ $row->file_path }}');"><i class="fa fa-file-pdf-o"></i></a>
My javascript code is like this :
function showAjaxPdf(file_path)
{
var file_path = file_path.replace(/\\/g,"/");
//example : file_path = assets/images/myfile.pdf
$.ajax({
type: "POST",
data: 'file_path=' + file_path,
url: "news/test",
success: function(response)
{
$('#test').html(response);
}
});
}
My function test in controller :
public function postTest(Request $request)
{
$file_path = $request->input('file_path');
return response()->download($file_path);
}
When I click on the pdf icon, no response.
I wish, when click on the pdf icon, appear like this:
how to keep when click pdf icon, the image appears like it?
Thank you
Upvotes: 6
Views: 23456
Reputation: 43
What I have done is, written two separate route one to verify and one to download. On success of one ajax I have triggered window.open(downloadUrl,'_blank') to download in separete window. It is not the way asked but it prevents any upcoming errors as verify url will sort that
$.ajax({ url: verifyUrl, type: 'get', cache: false, data: null, error: function (err){$('#ajax_loader_div').hide();}, success: function(response) { console.log(response); $('#ajax_loader_div').hide(); if (response.status == 'success') { window.open(downloadUrl,'_blank'); }else if(response.status == 'error') { //show error } } });
Upvotes: 1
Reputation: 374
return Response::download($file_path, '<filename>', $headers);
It's return response, not download file!
Upvotes: 0
Reputation: 686
for that you need to set the header with response object. Please see the below code.
$headers = array(
'Content-Type'=> 'application/pdf'
);
$file_path = $request->input('file_path');
//TODO: you have to split the file name from url
return Response::download($file_path, '<filename>', $headers);
I hope this code will help you
Upvotes: 0