2012-05-13 189 views
1

我正在为一个站点的简单文档管理系统工作 - 用户可以上传大约20种不同的文件类型,并且文档被重命名,然后存储在www上方的文件夹中,在文档表中创建以捕获用户输入的元数据,然后通过另一个php文件检索该项目,以便为用户隐藏文件的存储位置。文件打开/保存为对话框和mime类型

当用户点击使用简单的href下载文件时,它会调用例如“view.php?doc = image.jpg” - 当他们这样做时,当前文件会在浏览器中打开,因此jpg打开一个带有“翅膀”页面的窗口,如字符等。

我希望能够强制打开/保存对话框,以便用户决定要做什么以及我的应用程序不会尝试在浏览器窗口中打开与上述结果。

从以前的发布中我发现我知道我不能在“a href”标记中传递MIME类型,所以我还有其他选项吗?例如,我可以将标题信息放入下面的view.php文件吗?

$_file = $_GET['doc']; 

$filename = './dir/'.$_file; 

if (file_exists($filename)) { 
echo file_get_contents('./dir/'.$_file); 
} else { 
echo "The file $_file does not exist"; 
} 
; 
+0

可能重复[Force下载图片?](http://stackoverflow.com/questions/5648967/force-download-image) –

+0

我不觉得它是重复的,如果这些都是一个文件类型那么做起来相当简单 - 我的挑战(在我的脑海中)是输出文件可以是20种类型中的任何一种,所以我需要根据文件类型有不同的头文件。 – bhttoan

回答

1

你可以使用get_headers()以获得所需的文件的MIME类型头,然后用header()来输出那些标题为你显示文件。

或者,简单地强制下载,这样的:

header('Content-Description: File Transfer'); 
header("Content-type: application/octet-stream"); 

应该这样做。

+0

我试过这个,但get_headers()只能用于一个URL,因为这个文件在www根目录之外,所以我不认为这个在这个例子中会起作用。 – bhttoan

+0

添加了一个不使用'get_headers()'的解决方案。 dev-null-dweller是正确的,[Force下载图像](http://stackoverflow.com/questions/5648967/force-download-image)有你想要的解决方案。我只是复制 - 在这里改变它。 –

相关问题