查找特定文件名的扩展名

时间:2012-10-26 05:26:06

标签: php flash file mod-rewrite

我正在创建一个图片托管服务,我想缩短名称,使其没有扩展名,文件位于我服务器的“root”目录中。我已经到了可以加载任何PNG文件的位置,它会显示图像,但是说,文件是swf或jpg,它仍然会尝试打开PNG。 现在,这就是我目前所拥有的。如果文件名有扩展名,文件名以gif,jpg,png或swf结尾,它将从/ img /目录加载文件。如果没有,它将打开media.php并解析那里的文件 htaccess的

RewriteEngine on
    RewriteCond %{REQUEST_URI} !/img/.*
    RewriteRule ^(.*\.(gif|jpg|png|swf))$ img/$1 [QSA]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ media.php?i=$1 [NC,L]

忽略原始

<?php
//Media.PHP
if(!isset($_REQUEST['i'])){
die("No media selected  ");
}
$filename = $_REQUEST['i'];
if(file_exists('img/'.$filename .'.png')){
$header = "image/png";
$ext = ".png";
}
elseif(file_exists('img/'.$filename .'.jpg')){
$header = "image/jpg";
$ext = ".jpg";
}
elseif(file_exists('img/'.$filename.'.jpeg')){
$header = "image/jpg";
$ext = ".jpeg";
}
elseif(file_exists('img/'.$filename .'.gif')){
$header == "image/gif";
$ext = ".gif";
}
elseif(file_exists('img/'.$filename .'.swf')){
$header == "application/x-shockwave-flash";
$ext = ".swf";
}
else die("404 File not found");
header("Content-Type: $header");
@readfile('img/'.$filename."$ext");

现在,这适用于图像(png,gif,jpg,jpeg),但我无法使用.swf文件正常工作。它只是下载它们。因此,在这种情况下,我可以从mydomain.com/MYSWF.swf打开文件,但不能打开文件mydomain.com/MYSWF,因为它使用较短的链接下载它。

2 个答案:

答案 0 :(得分:1)

在设置==的情况下,gif和swf看起来有双重等号($header)吗?

答案 1 :(得分:0)

当它是swf文件时尝试这个标题:

$fileName="filename.swf";
header("Content-Type: application/x-shockwave-flash",true);
header("Accept-Ranges: bytes",true);
header("Connection: keep-alive",true);
header("Content-Disposition: inline; filename=$fileName");
readfile($fileName);