2012-08-14 123 views
0

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

我的猜测是我可以通过设置一些标题并打印文件的字节来实现。但据我所知,我需要设置Content-type标题才能正确显示内容。我如何获得文件的内容类型?它与mime类型相同吗?

+1

显示文件夹结构与内容类型无关。您需要使用PHP文件和文件夹功能。 – Fluffeh 2012-08-14 09:47:21

+0

所以你想用PHP来提供这些文件?为什么不直接链接到他们? – powerbuoy 2012-08-14 09:47:22

+0

@powerbuoy因为我会链接到它们,浏览器会下载它们,而不是显示它们。 @ Fluffeh,我不想显示文件夹,而是浏览器中的文件。就像您使用Chrome查看文件一样。 – 2012-08-14 09:48:38

回答

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> 
2

,以便处理在浏览器本身就可以使用的MIME Content-type采取帮助它被废弃了许多不同类型的文件。

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

+0

谢谢,我知道如何获得MIME类型,但不知道是否MIME类型=内容类型,所以我想我会使用2你建议。 – 2012-08-14 11:21:34

0

试试这个:

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

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

它可能不完全正常工作,但它是一个起点。

1

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

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