Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.09.2005, 11:32
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 1  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Thumbs down Лишний байт при загрузке файла

Есть таблица, в которой хранятся настоящие имена файлов, их тип и идентификатор... На диске файлы лежат с именами "идентификатор.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

Старый 14.09.2005, 13:19
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 2  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Мдя, проблема нашлась запуском скрипта с output_buffering off.
Пробел перед <?php
Спасибо за внимание
__________________
X

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:20.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.