PDA

Просмотр полной версии : swf на сайте работает, на харде нет


AleXNoD GD
19.09.2008, 12:55
Заливаю swf на сайт, всё запускается.
Качаю его же средствами php, а при открытии белый расползшийся экран. Если же качать напрямую, то всё норм.
Значит что-то в скрипте. Использую вот сие чудо:

<?php
$filename = $cd."/".$fn;
if (!file_exists($filename))
{
header ("HTTP/1.0 404 Not Found");
exit;
}
$fsize = filesize($filename);
$ftime = date("D, d M Y H:i:s T", filemtime($filename));
$fd = @fopen($filename, "rb");
if (!$fd){
header ("HTTP/1.0 403 Forbidden");
exit;
}
// Если запрашивающий агент поддерживает докачку
if ($HTTP_SERVER_VARS["HTTP_RANGE"]) {
$range = $HTTP_SERVER_VARS["HTTP_RANGE"];
$range = str_replace("bytes=", "", $range);
$range = str_replace("-", "", $range);
if ($range) {fseek($fd, $range);}
}
$content = fread($fd, filesize($filename));
fclose($fd);
if ($range) {
header("HTTP/1.1 206 Partial Content");
}
else {
header("HTTP/1.1 200 OK");
}
header("Content-Disposition: attachment; filename=$fn");
header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: ".($fsize-$range));
header("Content-Range: bytes $range-".($fsize -1)."/".$fsize);
header("Content-type: application/octet-stream");
print $content;
exit;

?>


Либо поставлю вопрос иначе, как правильно качать swf?)))

Mnilionic
19.09.2008, 18:34
if( isset($HTTP_SERVER_VARS["HTTP_RANGE"]) ){...


и давно пора уже вместо $HTTP_SERVER_VARS использовать $_SERVER

AleXNoD GD
19.09.2008, 19:41
Если бы это решало проблему

Mnilionic
19.09.2008, 23:00
if ($range){
любим грабли?

Mnilionic
20.09.2008, 03:56
<?php

$file_name = "1.swf";

if( !file_exists($file_name) ){
header ("HTTP/1.0 404 Not Found");
header("Content-Type: text/html");
//header("Content-Disposition: attachment;filename=404.html");
die('<html><body><h1>404</h1></body></html>');
}


$fp = fopen ($file_name, "rb");


if( isset($_SERVER['HTTP_RANGE']) ){
$seek = str_replace( array('bytes=','-'), '', $_SERVER['HTTP_RANGE']);
fseek($fp, $seek);
header("HTTP/1.1 206 Partial Content");
}


$contents = fread ($fp, filesize ($file_name));
fclose ($fp);

$length = strlen($contents);

header("Content-Type: application/x-shockwave-flash");
header("Content-Length: {$length}");
header("Content-Disposition: attachment;filename={$file_name}");

print $contents;
?>

Яски
20.09.2008, 22:47
Mnilionic, а код
if (!$fd){
header ("HTTP/1.0 403 Forbidden");
exit;
}
как у AleXNoD GD не нужен?

Mnilionic
20.09.2008, 23:01
мне не нужен

Яски
21.09.2008, 03:56
А в принципе нужен? Я в пхп не смыслю, а код заюзать хочется.

Mnilionic
21.09.2008, 19:59
в принципе можно застраховаться если вдруг фаил не удаётся прочесть.
Только если вы "не смыслите" Вам это не поможет.
Потому как куски одного кода не всегда подходят к другому.

AleXNoD GD
22.09.2008, 12:30
Не, всё то же самое. Оно то качается, но ни черта не воспроизводится.
Ладно, придется через Header("location") :))))

Mnilionic
22.09.2008, 14:58
значит что-то криво делается, у меня с этим скриптом, прикрасно чачается, докачвается и вопросизводится после этого

AleXNoD GD
23.09.2008, 16:04
Может быть криво закачивается.