2012-10-26 99 views
0

我正在創建一個圖像託管服務,我想縮短名稱以便它沒有擴展名,並且這些文件位於我的服務器的「根」目錄中。我已經到了可以加載任何PNG文件的地步,它會顯示圖像,但是說,文件是swf或jpg,它仍會嘗試打開PNG。 現在,這是我目前所擁有的。如果文件名上有擴展名,文件名以gif,jpg,png或swf結尾,則會從/ img /目錄加載文件。如果不是,它會打開,並忽略原始解析文件形式存在 的.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,因爲它使用較短的鏈接下載文件。

回答

1

看起來有兩個等號(==)爲您的gif和瑞士法郎如果條件,而設置$header

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); 
相關問題