Как передать SWF-Flash-файл, используя PHP-посредник .k.a. HTTP-псевдопотоковый сценарий? - PullRequest
0 голосов
/ 08 февраля 2012

Я пишу простую небольшую контекстную медиа-платформу.В основном он основан на так называемом псевдопотоке HTTP, где я передаю медиафайл с помощью сценария php.Это используется для проверки доступа к файлу и для ссылки на правильный каталог.В следующих основных частях моего кода:

// [...]

header("Content-type: " . $file_type);
header("Content-length: " . $file_size);
header("Content-Disposition: attachment; filename=" . $file_name);
header("Expires: " . gmdate ("D, d M Y H:i:s", (time () + $_CFG['FILE_EXPIRE_TIME']))); 
header("Last-Modified: " . gmdate ("D, d M Y H:i:s", filemtime($file_path)));  

$file_handle = fopen($file_path, "r");
while (!feof($file_handle)) {
      print(fread($file_handle, FILETRANSFER_BUFFER_SIZE));
}
fclose($file_handle); 

// [...]

В настоящее время я использую этот скрипт для передачи форматов mp3, flv, mp4, pdf и изображений.Это работает довольно хорошо.Кроме того, я хотел добавить поддержку Flash (SWF).Однако файл передается.Заголовок HTTP, отправляемый сервером, также выглядит нормально:

HTTP/1.1 200 OK
Date: Wed, 08 Feb 2012 08:49:16 GMT
Server: Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 PHP/5.2.6-1+lenny9 with
Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_ssl/2.2.9 OpenSSL/0.9.8g
mod_perl/2.0.4 Perl/v5.10.0
X-Powered-By: PHP/5.2.6-1+lenny9
Expires: Thu, 07 Feb 2013 08:49:16
Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Pragma: no-cache
Content-length: 28869
Content-Disposition: attachment; filename=SWFTest1.swf
Last-Modified: Tue, 07 Feb 2012 08:31:00
Content-Type: application/x-shockwave-flash

Единственная проблема: если я хочу воспроизвести этот флэш-файл из браузера (независимо от типа браузера), он не работает.Flashharea остается пустым.Если я ссылаюсь непосредственно на тот же файл .swf, он работает.Если я загружаю с помощью своего ретрансляционного скрипта и играю во флэш-файл локально: он работает.

Мои строки вызова DHTML / JavaScript:

<script type="text/javascript" src="swfobject.js"></script>

<div style="margin: 5px;" id="flashcontent"></div>                              
<script type="text/javascript">
    var s1 = new SWFObject("file.php?id=236&type=media", "flashfile", "480", "360", "7");
    s1.addVariable("width","480");
    s1.addVariable("height","360");
    s1.write("flashcontent");
</script>     

Любые идеи?

1 Ответ

0 голосов
/ 13 ноября 2013

Content-Disposition: attachment; filename=SWFTest1.swf - проблема с заголовком.Начиная с Flash 10.0.2, его присутствие предотвращает загрузку SWF по соображениям безопасности.

Ссылка: http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes.html#head32

...