【问题标题】:laravel pdf file download from ajax request (laravel 5)从ajax请求下载laravel pdf文件(laravel 5)
【发布时间】:2016-04-03 19:48:55
【问题描述】:

我的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图标时,图片出现的样子?

谢谢

【问题讨论】:

  • @user3158900,我觉得不一样。我在ajax响应中的问题。 success: function(response) { $('#test').html(response); }
  • @user3158900, 响应似乎错误。
  • 您的控制器正在尝试返回文件下载。您正在接受该响应并尝试将其设置为页面上的 html。很难说出你真正想要什么。您希望用户能够将 pdf 文件下载到他们的机器上,还是希望 pdf 本身的内容出现在页面的某个位置?
  • @user3158900,感谢您回答我的问题。我希望用户能够将 pdf 文件下载到他们的机器上。

标签: javascript ajax laravel pdf download


【解决方案1】:

我所做的是,编写了两条单独的路线,一条用于验证,一条用于下载。 在一个 ajax 成功后,我触发了 window.open(downloadUrl,'_blank') 在单独的窗口中下载。 这不是要求的方式,但它可以防止任何即将发生的错误,因为验证 url 会对其进行排序

$.ajax({ 网址:验证网址, 类型:'得到', 缓存:假, 数据:空, 错误:函数 (err){$('#ajax_loader_div').hide();}, 成功:功能(响应){ 控制台日志(响应); $('#ajax_loader_div').hide(); if (response.status == '成功') { window.open(downloadUrl,'_blank'); }else if(response.status == 'error') { //显示错误 } } });

【讨论】:

    【解决方案2】:

    为此,您需要使用响应对象设置标头。 请看下面的代码。

        $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);
    

    希望这段代码对你有帮助

    【讨论】:

      【解决方案3】:

      返回Response::download($file_path, '&lt;filename&gt;', $headers);

      是返回响应,不是下载文件!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 2015-04-12
        • 1970-01-01
        • 2016-09-20
        • 2015-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多