我的HTML代码是这样的:
<a href="javascript:;" onclick="showAjaxPdf('{{ $row->file_path }}');"><i class="fa fa-file-pdf-o"></i></a>
我的javascript代码是这样的:
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);
}
});
}
我在控制器中的功能测试:
public function postTest(Request $request)
{
$file_path = $request->input('file_path');
return response()->download($file_path);
}
当我点击pdf图标时,没有回复。
我希望,当点击pdf图标时,显示如下:
单击pdf图标时如何保持,图像看起来像?
谢谢
答案 0 :(得分:0)
为此您需要使用响应对象设置标头。 请参阅以下代码。
$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);
我希望此代码可以帮助您
答案 1 :(得分:0)
返回Response::download($file_path, '<filename>', $headers);
这是返回响应,而不是下载文件!
答案 2 :(得分:0)
我所做的是,编写了两个单独的途径,一个进行验证,另一个进行下载。 在成功完成一个ajax时,我触发了window.open(downloadUrl,'_ blank')在单独的窗口中下载。 并不是这样问的,但是它可以防止任何即将到来的错误,因为验证URL可以对
进行排序$.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 } } });