用PHP在浏览器中显示文件

时间:2012-08-14 09:44:44

标签: php mime-types content-type

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

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

是的MIME类型。在

找到一个列表

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我为此问题制定的最佳解决方案是使用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>

答案 4 :(得分:0)

试试这个:

$file = file_get_contents($_FILES['myupload']['tmp_name'];
$type = $_FILES['myupload']['type'];

header("Content-Type: ".$type);
echo $file;

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