【问题标题】:how to download pdf file from public folder in symfony如何从symfony的公共文件夹中下载pdf文件
【发布时间】:2021-01-12 02:39:09
【问题描述】:

我正在使用 dompdf 从 html 模板生成发票,每项工作都完美无缺,发票以绝对文件路径和文件名保存在数据库中,当我访问公共/发票时,我在那里找到了我所有的 pdf 文件,我想制作一个链接按钮以下载或在浏览器中打开文件。

我创建了一个像这样获取绝对文件的链接:

{% for invoice in invoices %}
<tr>
  <td> {{ invoice.id }} </td>
  <td>{{ invoice.fileName }}</td>
  <td>{{ invoice.booking.user.name }}</td>
  <td>{{ invoice.booking.car.registrationNumber }}</td>
  <td>{{ invoice.booking.startDate | date('d-m-Y') }}</td>
  <td><a href="" class="btn btn-sm btn-outline-danger">Archiver</a></td>
  <td><a href="{{ asset('invoices/' ~ invoice.filePath) }}) }}" style="color: #DDDDDD" class="btn btn-sm btn-dark"><i style="padding-right: 10px" class="fa fa-download"></i>Télecharger</a>
  </td>
</tr>
{% endfor %}

我收到了这个错误:

没有找到“GET”的路线 /home/sahnoun/Downloads/SousseCar/public/invoices/aKRyaziz.pdf)%20%7D%7D" (来自“http://127.0.0.1:8000/admin/invoice/all”)

【问题讨论】:

    标签: php html symfony download dompdf


    【解决方案1】:

    您在尝试使用asset() 函数时关闭了两次大括号,该函数会在输出中生成额外的“)}}”(url 编码:“)%20%7D%7D”,您可以看到在错误消息中)。所以很自然,这条路是不存在的。

    ...
    // remove surplus '}})'
    href="{{ asset('invoices/' ~ invoice.filePath) }}) }}"
    ...
    

    对:

    href="{{ asset('invoices/' ~ invoice.filePath) }}"
    

    【讨论】:

      【解决方案2】:

      而且你真的应该将发票信息暴露给公共互联网 - 这基本上是巨大的安全性和用户信息泄露 - 请将该逻辑移动到你的控制器中,在那里你检查请求用户是否有适当的权限信息,然后返回例如。 BinaryFileResponse 来自该控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多