Перейти к контенту
  • 0

Скачка и закачка


Вопрос

Прочитал факю, естесьна не все... ответа найти не смог:

 

Проблем с заливанием файлов на форум:

Не заливаются файлы больше двух мб.... (в св-вах группы проставлено больше двух мб)

ну и со скачкой:

Тормозная скорость и регет ругается, что докачка не поддерживается :D

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
два мега стандартное ограничение на хостинге в php.ini из аттача к посту никогда качателем не качалось, антилич встроенный.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Странно... у меня качается... но тормозно...

 

А можно отключить эту защиту нафиг? Типа он даже файлы шифрует своим разрешением блин, поганец :D[1116157944:1116233633]ну помогите плиз....

 

Кста еще не отображаются файлы с русским названием (а точнее руские буквы заменяются на ______)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Кста еще не отображаются файлы с русским названием (а точнее руские буквы заменяются на ______)

setlocale(LC_CTYPE, array("ru_RU.CP1251", "ru_SU.CP1251", "ru_RU.KOI8-r", "ru_RU", "russian", "ru_SU", "ru"));

Ссылка на комментарий
Поделиться на других сайтах

  • 0

у меня таже проблемма... не хочет разрешать программе докачки докачивать файл...

 

прога докачки просто не понимает, что это файл к примеру мп3 и качает его как index.php...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Дописать просто еще один HTTP заголовок, кажется..

 

Я сам с HTTP-протоколом дружу, но не очень, посему без примеров.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

я сделал, чтобы прога докачки понимала что за файло, имя его и размер, но в упор не хочет докачивать файло и хоть ты что хошь...

 

чета у меня такое подозрение. что при докачке прога спрашивает заново скрипт и ей говорится, что надо качать заново почему-то... проверено стопудова, что с этого хоста где форум прямые файлы докачиваются, значит ошибка именно в скрипте... какое-то кривое перенаправление на файл...

 

Destruction, какой такой HTTP заголовок? для чего?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ладно, вот все ленивые - ща погляжу заголовки.

 

*Смотрит заголовки*

 

Ответ с поддержкой докачки (какой-то mp3-файл):

HTTP/1.1 200 OK
Server: nginx/0.3.2
Date: Tue, 31 Jan 2006 02:17:57 GMT
Content-Type: audio/mpeg
Connection: keep-alive
Last-Modified: Tue, 13 Dec 2005 23:04:15 GMT
ETag: "3140e-0-439f536f"
Accept-Ranges: bytes
Content-Length: 0

 

Ответ без поддержки докачки (архив IPB):

HTTP/1.1 200 OK
Date: Tue, 31 Jan 2006 02:20:53 GMT
Server: Apache/1.3.34 (Unix) PHP/4.4.2 mod_ssl/2.8.25 OpenSSL/0.9.7e
X-Powered-By: PHP/4.4.2
Pragma: public
Expires: 0
Cache-Control: must-revalidate, post-check=0, pre-check=0
Cache-Control: private
Content-Disposition: attachment; filename="ipb.zip";
Content-Transfer-Encoding: binary
Content-Length: 2529320
Connection: close
Content-Type: application/force-download
Content-Language: ru

 

Не уверен, но вроде Connection: close портит дело или отсутствие ETag, кароче пойду спецификацию HTTP читать.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

хедер постоянно новый посылается... мне така сказали, вот как исправить чтобы он не посылался постоянно новый? галимость мля какая-то с этими докачками и ни один админ помочь не может... спецы тоже мне :D

 

скрипт форума при скачивании файлов посалает браузеру хедер, типа это

такой то файл и такой то у него размер, хотя сам файл лежит в

переименнованном виде... поэтому получается, когда юзаешь прогу докачки, при

повторном обращении, скрипт заново отправляет инфу и докачка не срабатывает...

 

Вывод: надо сделать как нить так, чтобы инфа отправлялась тока один раз... или скрипт перенаправлял на файл или переименовывал файл для докачки или еще какую хрень? прогеры, отзовитесь ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Я тут подумал - и не помогут, ессно -)

 

Надо обрабатывать на более высоком уровне, т.е. смотреть, что запрашивают и делать соответсвующий вывод, надо поэксперементировать, но у меня не хватает в голове PHP-комманд, пойду читать хелп.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

у меня у друга пхпбб, но он его помоему так передрючил, что от пхпбб там осталась тока морда :D

 

ну так он у себя заново переписывал всю систему загрузки и скачки... и тока тогда у него появилась докачка...

 

надо с хидерами бороться... я вот делал прямой вывод файла, докачка появлялась, зато пропадало нормальное название файла... становилось *.ipb ну и что за жизнь? ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Копался, копался, нифига не понял -)

 

Что определяет возможность докачки?

Вот у меня например скрипт:

<?php

$headers = getallheaders();
foreach ($headers as $header => $value) {
  $e .= "$header: $value <br />\n";
}
header("Last-Modified: Tue, 31 Jan 2006 21:22:37 GMT");
header("Content-Length: ".strlen($e)." bytes");
echo $e;
?>

Ну и чего ему не нравится? Он видет, что документ статичный (ласт-модифед), знает его размер, почему бы не докачать завтра?

 

Хмм, размер не нравится -(

 

Признаться честно, с HTTP имею крайне мало опыта -(

 

Вобщем желающие помочь мне разобраться, в асю -)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
ты где такое смотришь? надо смотреть attach.php :D

Зах мне attach.php ?

 

Для начала надо установить, какой файл поддерживает докачку !

 

Затем открыть attach.php и сделать всё необходимое, чтобы файл поддерживал докачку.

 

________________________________________

 

Люди, я ж гений ! :-)

 

В Download Master есть кнопочка сейва логу, логу поддерживающего и не поддерживающего сейвнул и ай-ай-ай, чего я там увидел -)

 

Вобщем пишем соответствующий заголовок, и вуалямс - оно поддерживает докачку, но выдет фигня, дальше надо читать заголовок отсылаемый менеджером закачек и выдавать соответсвующий кусок контенту.

 

Чуть позже мб (наврятли, я ленивый) бут мод. Требование - должен работать http://php.net/getallheaders , для этого PHP должен быть установлен как модуль апача, что это значит - не спрашивайте, у меня работает я и доволен.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А загрузка тут чем помешала?

 

Тут только выгрузка имеет значение - шлём Download-агенту пользователя сабж о том, что мы прекрасно понимаем, что от нас хотят и мы обязуемся выдавать только ту часть, которую спросят и соответственно держим слово.

 

ИМХО - фигню сделали -)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
да ни фига не фигня :D просто система загрузки файлов была заточена под переименование файлов, а меня это раздражало и этьо переименование жрало ресурсов сервака много... прикинь каждый раз туда седа инфу гонять про файл... короче кривость была на мой взгляд ;)
Ссылка на комментарий
Поделиться на других сайтах

  • 0

переименуй у себя файл в windows и прочувствую эту ужасно великую потерю ресурсов :D

да и не жрало это ничего, т.к. в uploads из временной папки для аплоада на серваке файл попадал уже переименованный, as i know

@move_uploaded_file( $_FILES[ $this->upload_form_field ]['tmp_name'], $this->saved_upload_name)

если уж смотреть с твоей стороны, то создание папок только добавило растратности твоему скрипту ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Вот и я об этом - надо просто отправлять заголовки да и только..

 

Да и раздавать скриптом лучше - можно вести статистику кто начал качал, кто скачал до конца..

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Мне все-таки кажется, что дело именно в ETag

ETag (Entity tag) является уникальным идентификатором версии объекта и чаще всего генерируется какой-либо хэш-функцией. Спецификация не навязывает каких-либо алгоритмов для вычисления значения ETag — главное чтобы это значение было уникально для всех различных версий одного объекта. Значение ETag одного объекта может совпадать со значением другого, из этого не следует эквивалентность этих объектов.

 

При скачивании программами (Flashget и прочее), я так понимаю, что сравнение файлов именно идет по Etag, так как форум не возвращает его, то программа думает, что файл каждый раз новый.

 

Никто не разобрался, что надо поправить, чтобы докачка заработала при скачивании с форума?

 

Wed Jun 14 14:37:15 2006 Pragma: no-cache

Wed Jun 14 14:37:15 2006 Cache-Control: no-cache

Wed Jun 14 14:37:15 2006 Connection: close

Wed Jun 14 14:37:15 2006 HTTP/1.1 200 OK

Wed Jun 14 14:37:15 2006 Date: Wed, 14 Jun 2006 10:37:15 GMT

Wed Jun 14 14:37:15 2006 Server: Apache/1.3.33 (Unix)

Wed Jun 14 14:37:15 2006 Cache-Control: max-age=0

Wed Jun 14 14:37:15 2006 Expires: Wed, 14 Jun 2006 10:37:15 GMT

 

Wed Jun 14 14:37:12 2006 Pragma: no-cache

Wed Jun 14 14:37:12 2006 Cache-Control: no-cache

Wed Jun 14 14:37:12 2006 Connection: close

Wed Jun 14 14:37:12 2006 HTTP/1.1 206 Partial Content

Wed Jun 14 14:37:12 2006 Date: Wed, 14 Jun 2006 10:37:12 GMT

Wed Jun 14 14:37:12 2006 Server: Apache/1.3.33 (Unix)

Wed Jun 14 14:37:12 2006 Cache-Control: max-age=0

Wed Jun 14 14:37:12 2006 Expires: Wed, 14 Jun 2006 10:37:12 GMT

Wed Jun 14 14:37:12 2006 Last-Modified: Thu, 04 Mar 2004 08:48:42 GMT

Wed Jun 14 14:37:12 2006 ETag: "1fa01a-11a8000-4046ed6a"

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Доброго всем времени суток!

 

Да, проблема возможности докачки действительно существует. Может быть уже кто-то решил ее? Сам до недавнего времени думал, что ipb поддерживает докачку. Подскажите пожалуйста, кто как сделал докачку?

 

С уважением, c1clopus.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Для версии 2.0.*

 

/sources/misc/attach.php

 

заменить вот это

			//-----------------------------------------
		// Set up the headers..
		//-----------------------------------------

		//flush();

		@header( "Content-Type: ".$ibforums->cache['attachtypes'][ $attach['attach_ext'] ]['atype_mimetype'].
				 "\nContent-Disposition: inline; filename=\"".$attach['attach_file']
				 ."\"\nContent-Length: ".(string)(filesize( $file ) ) );

		//-----------------------------------------
		// Open and display the file..
		//-----------------------------------------

		$fh = fopen( $file, 'rb' );
		fpassthru( $fh );
		@fclose( $fh );
		exit();

 

На вот это

 

	$fsize = filesize($file);

if ($_SERVER['HTTP_RANGE'])
{
  $range = $_SERVER['HTTP_RANGE'];
  $range = str_replace("bytes=", "", $range);
  list($range, $range1) = explode("-",$range);
}

$fh = fopen($file,"rb");

if (!$fh)
{
  @header("HTTP/1.1 403 Forbidden");
  exit();
}

if (isset($range) && ($range <= $fsize))
{
  fseek($fh, $range);
  @header("HTTP/1.1 206 Partial Content");
}
else
{
  @header("HTTP/1.1 200 OK");
  $range = 0;
}

@header("Content-Type: ".$ibforums->cache['attachtypes'][ $attach['attach_ext'] ]['atype_mimetype']."\n");
@header("Content-Disposition: inline; filename=\"".$attach['attach_file']."\"\n");
@header("Content-Length: ".($fsize-$range));
@header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H"), date("i"), date("s"), date("m"), date("d")+1, date("Y")))." GMT");
@header("Last-Modified: ".gmdate("D, d M Y H:i:s T", filemtime($file)));
@header("Content-Range: bytes $range-".($fsize - 1)."/$fsize");
@header("Accept-Ranges: bytes");
@header("Pragma: no-cache");

while(!feof($fh) and connection_status()==0){
	set_time_limit(0);
	print(fread($fh,1024*32));
	flush();
	ob_flush();
}

fclose($fh);

 

А в ipb 2.2.2 докачка уже есть, да? Судя по этому обсуждению на invisionpower http://forums.invisionpower.com/index.php?...mp;bug_cat_id=3

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.