如何打开放置在iframe html中直接访问阻止目录中的pdf文件

Posted

技术标签:

【中文标题】如何打开放置在iframe html中直接访问阻止目录中的pdf文件【英文标题】:how to open pdf file that is placed in direct access blocked directory in iframe html 【发布时间】:2021-09-02 03:23:35 【问题描述】:

我所做的是我对包含 pdf 的目录之一设置了直接访问限制。现在我必须在 iframe 中打开文件。当我创建文件副本并将该文件地址传递给 iframe src 时,它会下载而不是打开文件。

下面是我的代码。

<?php
    session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <title><?php echo $_GET['filename'] ?></title>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
    <?php
        $mime = mime_content_type($_GET['filename']);
        if(strstr($mime, "image/"))
    ?>
            <img src="fileViewer.php?filename=<?php echo $_GET['filename'] ?>" style="width: 70%;margin-left: 15%;">
    <?php
        
        else if(strstr($mime, "application/pdf"))
            $myfile = fopen("Temps/".$_SESSION['userName']."file.pdf", "w");
            fwrite($myfile, file_get_contents($_GET['filename']));
            $fileName= "Temps/".$_SESSION['userName']."file.pdf";
    ?>
    <iframe src="<?php echo $fileName ?>" style="width: 100%;height: 100vh;"></iframe>

    <?php
        
        else
    ?>
    <iframe src="fileViewer.php?filename=<?php echo $_GET['filename'] ?>" style="width: 100%;height: 100vh;"></iframe>
    <?php
        
    ?>
</body>
</html>

【问题讨论】:

这能回答你的问题吗? Show a PDF files in users browser via PHP/Perl 这能回答你的问题吗? Show a PDF files in users browser via PHP/Perl 不,我的代码已经在下载 pdf,但我想在 embed 等浏览器中显示 pdf。 请不要在问题中编辑解决方案公告。接受(即单击旁边的“勾号”)现有答案之一,如果有的话。如果现有答案尚未涵盖您的解决方案,您还可以创建自己的答案,甚至接受它。 【参考方案1】:

如果您的文件与您的网站不在同一主机上,则浏览器的预期行为是下载文件。要允许打开该文件,请确保您的网站和文件托管在同一台服务器上。

【讨论】:

文件和脚本都在同一个主机上【参考方案2】:

我已将我的代码更新为以下代码,一切都已解决..

    session_start();
?>
    <?php
        $mime = mime_content_type($_GET['filename']);
        if(strstr($mime, "image/"))
    ?>
            <img src="fileViewer.php?filename=<?php echo $_GET['filename'] ?>" style="width: 70%;margin-left: 15%;">
    <?php
        
        else if(strstr($mime, "application/pdf"))
        $file = $_GET['filename'];
        $filename = $_GET['filename']; /* Note: Always use .pdf at the end. */
        header('Content-type: application/pdf');
        header('Content-Disposition: inline; filename="' . $filename . '"');
        header('Content-Transfer-Encoding: binary');
        header('Content-Length: ' . filesize($file));
        header('Accept-Ranges: bytes');
        @readfile($file);

    ?>
    <?php
        
        else
    ?>
    <iframe src="fileViewer.php?filename=<?php echo $_GET['filename'] ?>" style="width: 100%;height: 100vh;"></iframe>
    <?php
        
    ?>

谢谢大家

【讨论】:

以上是关于如何打开放置在iframe html中直接访问阻止目录中的pdf文件的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止对html页面的直接访问

如何在 iframe 中阻止弹出式广告、横幅广告和视频广告?

如何阻止 wordpress 剥离或更改我的 html 代码,以便我可以在文本块中添加嵌入式 iframe?

根据是不是通过 iframe 查看网站来阻止访问网站 [重复]

如何阻止网站在 iframe 中加载?

如何在iframe上打开google身份验证器,而不是在弹出窗口中打开?