【问题标题】:Show files in browser in PHP用 PHP 在浏览器中显示文件
【发布时间】:2012-08-14 09:44:43
【问题描述】:

我已经创建了一个上传机制,现在我想创建一个页面,让您查看您上传的文件。但是我想在浏览器中显示它们(我只有浏览器支持的文件,如图像、PDF 等)。

我的猜测是我可以通过只设置一些标题并打印文件的字节来做到这一点。但据我所知,我需要设置Content-type 标头才能正确显示内容。如何获取文件的内容类型?和mime-type一样吗?

【问题讨论】:

  • 显示文件夹结构与内容类型无关。您需要使用 PHP 文件和文件夹函数。
  • 那么您想使用 PHP 来提供这些文件吗?为什么不直接链接到它们?
  • @powerbuoy 因为如果我链接到它们,浏览器会下载它们,而不是显示它们。 @ Fluffeh,我不想显示文件夹,而是浏览器中的文件。就像您使用 Chrome 查看文件一样。
  • 嗯,我的浏览器不会那样做。至少如果文件是“浏览器支持的文件,如图像、PDF 等”。
  • 嗯显然你是对的,我试过了,它没有下载它。但我会使用 PHP 脚本,因为我不想透露我的文件在硬盘上的位置。

标签: php mime-types content-type


【解决方案1】:

为了在浏览器本身中处理许多不同的文件类型,您可以使用已弃用的MIME Content-type 的帮助。

或者您也可以使用finfo-file,它还返回有关文件的信息。

【讨论】:

  • 谢谢,我知道如何获取 MIME 类型,但不知道 MIME 类型是否 = Content-Type,所以我想我会使用您建议的 2 个中的一个。
【解决方案2】:

是的,它的 MIME 类型。在

处查找列表

http://en.wikipedia.org/wiki/MIME_type

【讨论】:

  • 谢谢,这是回答我实际问题的唯一答案:)
【解决方案3】:

您必须阅读文件的内容,打印适当的标题并回显内容。如果浏览器检测到它可以显示这些文件类型,它将显示它们,否则它将提示用户保存到本地系统。代码将类似于下面指定的 sn-p:

header('Content-disposition: attachment; filename=huge_document.pdf');
header('Content-type: application/pdf');
readfile('file1.pdf');

【讨论】:

    【解决方案4】:

    我为这个问题制定的最佳解决方案是使用 Apache 的索引并使用FancyIndexing 应用一些样式,查看Apache Indexing Options,您可以显示您想要的 MIME。

    .htaccess:

    <IfModule mod_autoindex.c>
            IndexOptions FancyIndexing 
            IndexOptions VersionSort 
            IndexOptions HTMLTable 
            IndexOptions FoldersFirst 
            IndexOptions IconsAreLinks 
            IndexOptions IgnoreCase 
            IndexOptions SuppressDescription 
            IndexOptions SuppressHTMLPreamble 
            IndexOptions XHTML 
            IndexOptions IconWidth=16 
            IndexOptions IconHeight=16 
            IndexOptions NameWidth=*
            IndexOrderDefault Descending Name
            HeaderName /style/header.php
            ReadmeName /style/footer.php
    </ifModule>
    

    【讨论】:

      【解决方案5】:

      试试这个:

      $file = file_get_contents($_FILES['myupload']['tmp_name'];
      $type = $_FILES['myupload']['type'];
      
      header("Content-Type: ".$type);
      echo $file;
      

      它可能无法完全发挥作用,但它是一个起点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-27
        • 2014-11-18
        • 1970-01-01
        • 2014-07-08
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多