我必须点击链接下载列出的文件,因为我使用了下面的脚本,但是当文件被下载时,它无法确定下载文件的扩展名。那么,如何获取要下载的文件的MIME类型? _Please Help ...
$filename = $_GET['val'];
// Fetch the file info.
$filePath = $_SERVER['DOCUMENT_ROOT'] . "dfms/images/uploads/".$filename;
if(file_exists($filePath)) {
echo $fileName = basename($filePath);
$fileSize = filesize($filePath);
// Output headers.
header("Cache-Control: private");
header("Content-Type: application/octet");
header("Content-Length: ".$fileSize);
header("Content-Disposition: attachment; filename=".$fileName);
// Output file.
readfile ($filePath);
exit();
}
else {
die('The provided file path is not valid.');
}
答案 0 :(得分:7)
使用FileInfo扩展中的finfo_file函数(在PHP 5.3中默认启用)。 http://www.php.net/manual/en/function.finfo-file.php
来自文档中的示例
$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $filename);
finfo_close($finfo);
在5.3之前的PHP版本中,可以安装pecl扩展名http://pecl.php.net/package/Fileinfo
但是在这种情况下,它需要magic_open(libmagic)库http://sourceforge.net/projects/libmagic
另一种方法是使用已弃用的函数mime_content_type($filename)
http://au.php.net/manual/en/function.mime-content-type.php
哪个依赖于mime.magic文件