0

画像ホスティングサービスを作成していますが、名前を短くして拡張子がなく、ファイルがサーバーの「ルート」ディレクトリにあるようにします。任意の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]

media.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");

現在、これはimages(png、gif、jpg、jpeg)でうまく機能しますが、.swfファイルでは正しく機能しません。それらをダウンロードするだけです。したがって、この場合、ファイルはmydomain.com/MYSWF.swfから開くことができますが、mydomain.com / MYSWFからは開くことができません。これは、短いリンクでファイルをダウンロードするためです。

4

2 に答える 2

1

==設定中に、条件があればgifとswfに二重の等号()があるように見えます$headerか?

于 2012-10-26T06:13:13.073 に答える
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); 
于 2012-10-26T06:21:54.943 に答える