Reply to Re: How to detect if file download completed or cancelled

Your name:

Reply:


Posted by Dan D on 10/23/06 20:46

Thank you very much. That looks like it should work great. I'll give it
a try.
Dan

petersprc@gmail.com wrote:

> You could check the byte count in the web server log to see if the
> whole file was transferred.
>
> In PHP, you could also do this by checking connection_aborted() after
> sending the file. For example:
>
> ignore_user_abort(true); // Don't end if the connection breaks
>
> if (readfile($path) !== false && !connection_aborted()) {
> // Success!
> }
>
> Here's a larger example. The function sendFile returns the status of
> the download:
>
> <?
>
> // Sample usage
>
> function sendTest()
> {
> $res = sendFile('application.exe', 'application/octet-stream');
>
> if ($res['status']) {
> // Download succeeded
> } else {
> // Download failed
> }
>
> @saveDownloadStatus($res);
> }
>
> // The sendFile function streams the file and checks if the
> // connection was aborted.
>
> function sendFile($path, $contentType = 'application/octet-stream')
> {
> ignore_user_abort(true);
>
> header('Content-Transfer-Encoding: binary');
> header('Content-Disposition: attachment; filename="' .
> basename($path) . "\";");
> header("Content-Type: $contentType");
>
> $res = array(
> 'status' => false,
> 'errors' => array(),
> 'readfileStatus' => null,
> 'aborted' => false
> );
>
> $res['readfileStatus'] = readfile($path);
> if ($res['readfileStatus'] === false) {
> $res['errors'][] = 'readfile failed.';
> $res['status'] = false;
> }
>
> if (connection_aborted()) {
> $res['errors'][] = 'Connection aborted.';
> $res['aborted'] = true;
> $res['status'] = false;
> }
>
> return $res;
> }
>
> // Save the status of the download to some place
>
> function saveDownloadStatus($res)
> {
> $ok = false;
> $fh = fopen('download-status-' . $_SERVER['REMOTE_ADDR'] . '-' .
> date('Ymd_His'), 'w');
> if ($fh) {
> $ok = true;
> if (!fwrite($fh, var_export($res, true))) {
> $ok = false;
> }
> if (!fclose($fh)) {
> $ok = false;
> }
> }
> return $ok;
> }
>
> Dan D wrote:
>
>>I have a large install file (an exe) on my web server that people
>>download and install from. Looking at my log files, I see a lot of
>>people downloading it, but no way to tell for sure if they completed the
>>download or cancelled out before it completed. Is there any function in
>>PHP that would allow the web server to send the file and detect a
>>completion or cancellation? Or perpahs a javascript/PHP method?
>>
>>Any help would be greatly appreciated.
>>Thanks,
>>Dan
>
>

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация