【问题标题】:Yii - View protected PDF filesYii - 查看受保护的 PDF 文件
【发布时间】:2014-12-24 13:32:23
【问题描述】:

在我的应用程序中,有一些用户上传到服务器的 PDF 文件。这些是私有文件,它们不能具有全局可见性。

我正在尝试将这些文件上传到受保护的目录(例如,/protected/uploads)。用户必须能够查看这些文件,但它们必须对客户端浏览器可见。
类似于我的应用程序的“内部视图”。

我该怎么做?
如果我使用“assets”目录,文件将是全局可见的,对吧?

谢谢!

【问题讨论】:

    标签: php pdf yii protected


    【解决方案1】:

    您需要发送正确的标头并执行读取文件,例如:

    header('Content-type: application/pdf');
    header('Content-Disposition: inline; filename="yourPDF.pdf"');
    header('Content-Length: ' . filesize($filename));
    readfile($filename);
    

    这将按照您的要求在浏览器中打开文件,并防止用户直接抓取它。

    【讨论】:

    • 嗨!是的,我在另一个主题中找到了类似的解决方案,但这并不是我想要的。嗯,我认为它必须是这样的。谢谢!
    • 这不是您要找的东西是什么意思?
    • 好吧,基本上我想在我的应用程序中嵌入 PDF 文件。或多或少像这个扩展:yiiframework.com/extension/qpdfjs
    • 但是qpdfjs必须有URL设置的文件,将文件公开
    • 您仍然可以拥有例如 /pdf/view/id/1 的 URL,它将返回上面发布的标题。我不确定您的应用程序是如何设置的,但您可以在控制器中使用访问规则来防止未登录的用户访问此操作。 yiiframework.com/doc/guide/1.1/en/…
    【解决方案2】:

    你所追求的是请求组件上的一个方法,sendFile。这里简单介绍一下:http://www.yiiframework.com/doc/api/1.1/CHttpRequest#redirect-detail

    用法如下:

    Yii::app()->request->sendFile($filename, $content);
    

    $filename 将是您希望用户下载的文件的名称

    【讨论】:

    • 嗨!谢谢,但此方法将下载文件。我需要在浏览器中查看文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多