查找特定文件名的扩展名

Posted

技术标签:

【中文标题】查找特定文件名的扩展名【英文标题】:Find extension of a specific filename 【发布时间】:2012-10-26 05:26:06 【问题描述】:

我正在创建一个图像托管服务,我想缩短名称,使其没有扩展名,并且文件位于我服务器的“根”目录中。我已经到了可以加载任何 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

<?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 打开文件,因为它使用较短的链接下载它。

【问题讨论】:

【参考方案1】:

在设置 $header 时,您的 gif 和 swf if 条件似乎有双重等号 (==)?

【讨论】:

【参考方案2】:

当它是一个 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); 

【讨论】:

以上是关于查找特定文件名的扩展名的主要内容,如果未能解决你的问题,请参考以下文章

在 Unix 上查找不以特定扩展名结尾的文件名?

在文件夹中查找具有特定扩展名的文件

查找具有特定名称和任何扩展名的文件

如何在Python中的目录中查找具有特定文件扩展名的所有文件

如何从数组中查找具有特定扩展名的文件列表

在 Unix 中查找所有具有特定扩展名的文件?