WEB - приглашение браузера на загрузку файла...
редирект на урл файла
если хочется файл отдавать скриптом, то надо выставить следующие хидеры:
Опционально:
через некоторое время если хочется файл отдавать скриптом, то надо выставить следующие хидеры:
Content-type: application/octet-stream
Content-disposition: attachment; filename="<filename>"
Content-transfer-encoding: binary
Опционально:
Content-length: <length>
javascript location.href через window.setTimeout("changeRate;", 1000);

Сделал так
<script language="javascript">
window.setTimeout("location.href=\"files/i.zip\"",3000);
</script>
Первым вариантом попробовал через header на php.. он грузит, что написано вне <?php кода ?> прямо голым текстом...
Первым вариантом попробовал через header на phpа ты пользовал пхпшную функцию header?
<?php
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=\"i.zip\"");
header("Content-transfer-encoding: binary ");
?>
этот текст грузится в файл
в результате появляется окно для загрузки файла i.zip с текстом "этот текст грузится в файл"..
Этот код можно дополнить функциями построчного чтения из файла i.zip, например... тогда будет скачиваться то что надо... И получится удобный код для подсчёта количества закачек i.zip


Этот код можно дополнить функциями построчного чтения из файла i.zipтолько если readfile отключён и то, я бы отдал предпочтение чтению кусками фиксированного размера (по несколько Кб).
Если же хочется закачку реализовать, то надо выставлять:
Content-length: размер-куска-в-байтаха также парсить $_SERVER['HTTP_RANGE'] и читать/отправлять востребованный кусок файла двоично-безопасными функциями.
Content-size: размер-файла
Accept-ranges: bytes
зы: я вполне мог где-то что-то перепутать.
PHP - гавно!
PHP - гавно!как RFC2616 связано с ПХП? Или под до-диезом есть дефолтная либа для отправки файлов клиенту с докачкой?
Content-length: размер-куска-в-байтах Content-size: размер-файлатут напутал =)
про второй хидер гугл не в курсе, а про первый грит что это не размер какого то непонятного куска, а полный размер.
а это к чему всё? чисто чтоб свой счетчик скачиваний намутить?
тут напутал =)на самом деле конкретно это постоянно путаю, затем и написал п.с.
Короче, Content-length - размер файла, а данные куска указываются в Content-Range (вроде).
как RFC2616 связано с ПХП?С ПХП связан твой пост.
чисто чтоб свой счетчик скачиваний намутить?Не просто "свой счётчик скачиваний", а хитрую отдачу файлов.
Например, за деньги.
Например, из какого-то хранилища вроде БД.
С ПХП связан твой пост.лишь косвенно... Соответствующий базовый функционал мало зависит от языка. Другое дело, что могут быть надстройки над функционалом.
Единственное php-specific в моём посте - преобразование заголовков запроса. Тут исправлюсь: клиент посылает серверу примерно такой заголовок:
Range: bytes, start_byte-end_byte
Я вот раньше тоже не знал.
Не просто "свой счётчик скачиваний", а хитрую отдачу файлов.Например, за деньги.Например, из какого-то хранилища вроде БД.я как то задавал тут такой вопрос. в итоге про за деньги - все сошлись на том что лучше мутить хардлинк, а отдавать будет серв.
про генерацию из БД - жесть =)
в итоге про за деньги - все сошлись на том что лучше мутить хардлинк, а отдавать будет серв.Как будешь контролировать, что по хардлинку файл не скачает кто не должен?
Один человек заплатил и весь интернет качает в сто потоков.
про генерацию из БД - жесть =)мелкие и средние файлы (картинки, документы и т.д.) довольно часто отдаются из базы.
или это является откровением?
я как то задавал тут такой вопрос. в итоге про за деньги - все сошлись на том что лучше мутить хардлинк, а отдавать будет серв.есть альтернативный вариант
Как будешь контролировать, что по хардлинку файл не скачает кто не должен?Надо только имя файла угадать, ага. А хардлинк через определённое время будет удалён запускающимся по крону удалятором хардлинков, так что на угадывание у тебя ограниченное время... Ещё его можно по https отдавать чтобы у тебя не было желания поснифать трафик.
Один человек заплатил и весь интернет качает в сто потоков.
Ещё может быть вариант с генерацией ссылки вида http://server/files/client_ip/long-ident-code/filename.ext, при чём ип будет проверяться сервером и автоматически удаляться.
Надо только имя файла угадать, ага.Почему "угадать"?
Человек, который заплатил за скачивание - отдаст ссылку всему интернету.
Ещё может быть вариант с генерацией ссылки вида http://server/files/client_ip/long-ident-code/filename.ext, при чём ип будет проверяться сервером и автоматически удаляться.А отсюда - один шаг до активного скрипта, который сам всё это будет реализовывать, а не полагаться на функциональность сервера.
А отсюда - один шаг до активного скрипта, который сам всё это будет реализовывать, а не полагаться на функциональность сервера.на счёт ссылки я перепутал - ип в неё не следует включать, он будет добавляться к урлу апачевым урл_реврайтером. Думаю, быстрее скрипт не сделает. А если я буду качать в пять потоков (я ведь заплатил за такую возможность то запущенные пять экземпляров скрипта только ради одного клиента - это многовато. Если стоит не апач, а какой-нить нгинкс, то там что-то такое организовать тоже не проблема.
Почему "угадать"?И будет она работать только у тех, кто с ним за одним натом сидит. А в этом случае он и так поделится с окружающими.
Человек, который заплатил за скачивание - отдаст ссылку всему интернету.
Человек, который заплатил за скачивание - отдаст ссылку всему интернету.тот же depositfiles от этого много не потеряет, даже если крон будет чистить хардлинки каждый час я думаю =)
даже если крон будет чистить хардлинки каждый часКруто.
Я заплатил деньги, но у меня очень медленный интернет, и я не успел выкачать весь файл за один час.
и я не успел выкачать весь файл за один час.убей себя. ты неудачник
Как ты думаешь, долго ли в цивилизованном мире проживёт компания, говорящая "заплатите-ка нам деньги за скачивание файла... ок; так, у вас не получилось скачать файл - ну и идите нахуй, вы неудачники, ваши проблемы нас уже не ебут"?

Я вообще-то деньги за это скачивание заплатил.че качал-то ? оплата по смс ?
Какое нахуй "убей себя"? Я вообще-то деньги за это скачивание заплатил.Как ты думаешь, долго ли в цивилизованном мире проживёт компания, говорящая "заплатите-ка нам деньги за скачивание файла... ок; так, у вас не получилось скачать файл - ну и идите нахуй, вы неудачники, ваши проблемы нас уже не ебут"?а долго ли проживет сервис, написанный на PHP с использованием readfile?
а долго ли проживет сервис, написанный на PHP с использованием readfile?Тут в последних постах рекомендовали не readfile, а binary-safe функции чтения с промоткой.
Для раздачи файлов тошным (=сидящим на медленных соединениях) клиентам обычно используют reverse proxy, типа nginx. Если сделать отдачу контента с использованием "binary-safe функции чтения с промоткой" PHP, то все это дело загнется под нагрузкой, имхо.
Тут в последних постах рекомендовали не readfile, а binary-safe функции чтения с промоткой.если поддержка докачки не требуется, то readfile должно быть быстрее, т.к. при этом не выполняется пхп-код. Но суть не в этом. Действительно, скачивание через пхп (и, скорее всего, не только через пхп) имеет смысл лишь в отдельных специфических случаях.
если поддержка докачки не требуется, то readfile должно быть быстрее, т.к. при этом не выполняется пхп-код.А если не требуется?
Но суть - действительно не в этом.
Ты тут пытаешься сэкономить на спичках.
В большинстве случаев время, затраченное на пхп (или что-нибудь другое) будет совершенно мизерным с тем временем, которое уйдёт собственно на работу с диском.
Кстати, насчёт медленной работы с диском - не знаю, реализовано ли это в каком-нибудь nginx-е, но ты можешь реализовать свою очередь запросов к диску (файлы-то качает сразу много пользователей) и за счёт большой латентности (на нагрузке это почти никак не скажется, а пользователям пофигу) нехило так поднять производительность дисковых операций (если, конечно, у тебя не флэшка).

рапидшаре докачку на премиуме не поддерживает, живет и хорошо себя чувствуетна бесплатном поддерживает а на премиум нет?![]()
фигня какая-то
Очевидно, у завхоза не было премиума на рапиде. Либо он о какой-то другой рапиде пытается пролечить.

Да ты прикалываешься по ходу!
на зацени если не веришь
я оттуда флешгетом качал - все ок было
Оставить комментарий
amiantos
Подскажите, пожалуйста, как сделать, чтобы через какое-то время браузер вываливал окошко с приглашением сохранить/открыть закачиваемый файл.К примеру, как сделано на SourceForge.net
Много чего с товарищем перерыли.. никак не найдём...
Подскажите, пжлста!