laravel pdf文件从ajax请求下载(laravel 5)

时间:2015-12-29 21:25:10

标签: javascript ajax laravel pdf download

我的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图标时,显示如下:

enter image description here

单击pdf图标时如何保持,图像看起来像?

谢谢

3 个答案:

答案 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
                }
            }

        });