![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
|
Есть таблица, в которой хранятся настоящие имена файлов, их тип и идентификатор... На диске файлы лежат с именами "идентификатор.bin"
При загрузке обращаемся к скрипту с номером файла, он запрашивает в базе тип, идентификатор, имя и отправляет файл клиенту. <?php
define("DB_PREFIX_SITE", "somedb_");
define("FILEUPLOAD", "Disk:\\...\\files\\");
function db_connect() {
$db_host="localhost";
$db_login="login";
$db_pass="pass";
$db_db="mydb";
$link=@mysql_connect("$db_host","$db_login","$db_pass");
if ($link && mysql_select_db("$db_db")) {
return $link;
} else {
return false;
}
}
if (!db_connect()) {
header("HTTP/1.0 500 Internal Server Error");
exit;
}
$distrib=(int)$_GET["file"];
if ($distrib>0) {
$query="SELECT filename, filetype, fileid FROM ".DB_PREFIX_SITE."downloads WHERE id=".$distrib;
$result=mysql_query($query) or die("<h1>Invalid query: ".mysql_error()."</h1>");
if ($row=mysql_fetch_object($result)) {
$filename=$row->filename;
$filetype=$row->filetype;
$fileid=$row->fileid;
if (file_exists(FILEUPLOAD.$fileid.".bin")) {
$query="UPDATE ".DB_PREFIX_SITE."downloads SET access=access+1 WHERE id=".$distrib;
@mysql_query ($query);
header("Content-type: $filetype");
header("Content-Disposition: attachment; filename=".$filename.";");
header("Accept-Ranges: bytes");
header("Content-Length: ".filesize(FILEUPLOAD.$fileid.".bin"));
@readfile(FILEUPLOAD.$fileid.".bin");
exit;
} else {
header("HTTP/1.0 404 Not Found");
exit;
}
} else {
header("HTTP/1.0 404 Not Found");
exit;
}
} else {
header("HTTP/1.0 404 Not Found");
exit;
}
?>
Кто-нить в курсе как решить проблему или в чем она состоит? Сервер ISS, клиенты IE и FF. ЗЫ: Варианты из мануала с комментами не проходят...
__________________
X |
|
|||||
|
Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
|
Мдя, проблема нашлась запуском скрипта с output_buffering off.
Пробел перед <?php Спасибо за внимание ![]()
__________________
X |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|