用PHP在浏览器中显示文件
我已经创建了一个上传机制,现在我想创建一个页面让您查看您上传的文件。然而,我想在浏览器中显示它们(我只有浏览器支持的文件,如图像,PDF等)。用PHP在浏览器中显示文件
我的猜测是我可以通过设置一些标题并打印文件的字节来实现。但据我所知,我需要设置Content-type
标题才能正确显示内容。我如何获得文件的内容类型?它与mime类型相同吗?
是它的MIME类型。查找列表中
谢谢,是唯一的答案,回答了我的实际问题:) – 2012-08-14 11:22:42
我已经为这个问题是使用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>
,以便处理在浏览器本身就可以使用的MIME Content-type采取帮助它被废弃了许多不同类型的文件。
或者您也可以使用finfo-file这也返回有关文件的信息。
谢谢,我知道如何获得MIME类型,但不知道是否MIME类型=内容类型,所以我想我会使用2你建议。 – 2012-08-14 11:21:34
试试这个:
$file = file_get_contents($_FILES['myupload']['tmp_name'];
$type = $_FILES['myupload']['type'];
header("Content-Type: ".$type);
echo $file;
它可能不完全正常工作,但它是一个起点。
您将必须阅读文件的内容,打印适当的标题并回显内容。如果浏览器检测到它可以显示这些文件类型,则会显示它们,否则它会提示用户保存到本地系统。代码将类似于以下指定的代码段:
header('Content-disposition: attachment; filename=huge_document.pdf');
header('Content-type: application/pdf');
readfile('file1.pdf');
显示文件夹结构与内容类型无关。您需要使用PHP文件和文件夹功能。 – Fluffeh 2012-08-14 09:47:21
所以你想用PHP来提供这些文件?为什么不直接链接到他们? – powerbuoy 2012-08-14 09:47:22
@powerbuoy因为我会链接到它们,浏览器会下载它们,而不是显示它们。 @ Fluffeh,我不想显示文件夹,而是浏览器中的文件。就像您使用Chrome查看文件一样。 – 2012-08-14 09:48:38