Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать, скачался ли файл до конца 
:(
    Опции темы
Micher
Дата 23.9.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.1.2006
Где: г. Ижевск

Репутация: нет
Всего: нет



Всем доброго времени суток.

Скрипт получает на вход несколько параметров и в зависимости от них "выплёвывает" нужный файл клиенту.

Кусок кода:
Код

        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header('Content-disposition: attachment; filename='.basename($basename));
        header("Content-Type: image/jpeg");
        header("Content-Transfer-Encoding: binary");
        header('Content-Length: '. filesize($filename));
        readfile($filename);


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

Т.е. если например, файл по какой то причине не докачался клиентом полностью(инет у него упал вдруг или ещё что), то нам не нужно фиксировать, что файл у клиента.
PM MAIL   Вверх
Sanchezzz
Дата 23.9.2010, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



читай файл кусками и выдавай ему по кускам через цикл.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
bars80080
Дата 23.9.2010, 13:39 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



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

можно отдавать кусками, и предполагать, что отдача последнего = факту скачивания
PM MAIL WWW   Вверх
setnull
Дата 29.9.2010, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: нет
Всего: 1



так что именно нужно? Узнать, "довыплевывали" ли мы файл до последней капли или получил ли клиент корректно все до последнего бита?
если клиент - заинтересованное лицо, пусть вернет контрольную сумму полученного содержимого...

Это сообщение отредактировал(а) setnull - 29.9.2010, 09:09
PM MAIL   Вверх
bars80080
Дата 29.9.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(setnull @  29.9.2010,  09:06 Найти цитируемый пост)
так что именно нужно? Узнать, "довыплевывали" ли мы файл до последней капли или получил ли клиент корректно все до последнего бита?

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

PM MAIL WWW   Вверх
JSPrime
Дата 11.12.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.4.2010

Репутация: нет
Всего: 1



Здравствуйте!
У меня такая же ситуация

Код

header('Content-Disposition: attachment; filename='.$name);
header('Content-type: application/octet-stream');
header('Content-Length: '.$length); 

echo $code;


скрипт выдает файл на сохранение. Могу ли я определить то ли пользователь кликнул "сохранить файл" или "отмена". Знаю если он кликнет на сохранение файла, то сервер начинает выдавать ему файл, а как это определить? Это нужно для того, что бы вести счетчик количества закачек. Т.е. мне не нужно быть уверенным, скачался ли файл до конца или нет, главное узнать кликнул ли пользователь "сохранить файл".

Заранее спасибо!

Это сообщение отредактировал(а) JSPrime - 11.12.2010, 10:52
PM MAIL   Вверх
skyboy
Дата 11.12.2010, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(JSPrime @  11.12.2010,  09:48 Найти цитируемый пост)
Могу ли я определить то ли пользователь кликнул "сохранить файл" или "отмена".

не знаю, кто - как, а Опера начинает скачивание даже до того, как пользователь кликнет по "Открыть" или "Сохранить"
PM MAIL   Вверх
JSPrime
Дата 17.12.2010, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.4.2010

Репутация: нет
Всего: 1



Хорошо, а кто нибудь знает, что относительно других браузеров?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1177 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.