我已经建立了一个上传机制,现在我想创建一个页面,让您查看您上传的文件。但是,我想在浏览器中显示它们(我只有浏览器支持的文件,如图像、PDF 等)。
我的猜测是我可以通过只设置一些标题并打印文件的字节来做到这一点。但据我所知,我需要设置Content-type
标题才能正确显示内容。如何获取文件的内容类型?它和mime类型一样吗?
我已经建立了一个上传机制,现在我想创建一个页面,让您查看您上传的文件。但是,我想在浏览器中显示它们(我只有浏览器支持的文件,如图像、PDF 等)。
我的猜测是我可以通过只设置一些标题并打印文件的字节来做到这一点。但据我所知,我需要设置Content-type
标题才能正确显示内容。如何获取文件的内容类型?它和mime类型一样吗?
为了在浏览器本身中处理许多不同的文件类型,您可以使用已弃用的MIME Content-type的帮助。
或者你也可以使用finfo-file它也返回关于文件的信息。
是的,它的 MIME 类型。在以下位置查找列表
您必须阅读文件的内容,打印适当的标题并回显内容。如果浏览器检测到它可以显示这些文件类型,它将显示它们,否则它将提示用户保存到本地系统。该代码将类似于下面指定的代码段:
header('Content-disposition: attachment; filename=huge_document.pdf');
header('Content-type: application/pdf');
readfile('file1.pdf');
尝试这个:
$file = file_get_contents($_FILES['myupload']['tmp_name'];
$type = $_FILES['myupload']['type'];
header("Content-Type: ".$type);
echo $file;
它可能无法完全发挥作用,但它是一个起点。
我为这个问题制定的最佳解决方案是使用 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>