Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: полностью ли скачан файл?
 
 автор: pissed   (30.05.2008 в 00:07)   письмо автору
 
 

Отдаю файл следующим образом
if($down==1){
$link="/home/virtwww/w/bugs/bug.rar";
$links=explode("/",$link);
$link2=$links[5];
header ("Pragma: no-cache"); 
header("Content-Type: application/download\n"); 
header("Content-Disposition: attachment; filename=\"$link2\""); 
$fn=fopen($link , "r"); 
fpassthru($fn);
}

Можно ли узнать полностью пользователь скачал файл или нет?

   
 
 автор: BinLaden   (30.05.2008 в 00:52)   письмо автору
 
   для: pissed   (30.05.2008 в 00:07)
 

Пожалуй, Вы этого не сможете узнать.

   
 
 автор: pissed   (30.05.2008 в 01:09)   письмо автору
 
   для: BinLaden   (30.05.2008 в 00:52)
 

а что если как нибудь по частам отдавать? как последняя часть отдана то полностью или не пойдет?

   
 
 автор: BinLaden   (30.05.2008 в 01:18)   письмо автору
 
   для: pissed   (30.05.2008 в 01:09)
 

Ну вот так еще можно, думаю. Как-то так:

<?php
ignore_user_abort
true );

$fh fopen('/path/to/file''rb');

do
{
    
# Выдача новой порции
}
while( !
connection_aborted() );

if( !
feof($fh) )
{
    
# Загружен пользователем не до конца
}
else
{
    
# Успех
}

fclose($fh);
?>


P.S. Правда, конечно, PHP должен быть в качестве модуля Apache.

   
 
 автор: pissed   (30.05.2008 в 01:32)   письмо автору
 
   для: BinLaden   (30.05.2008 в 01:18)
 

а вот мой вариант какой получился. вроде удаляет файл после скачки
<?php
 $filename
="1.txt" ;
  if (!
file_exists($filename)) {
      
header ("HTTP/1.0 404 Not Found");
      exit;
  }

$fsize filesize($filename);
$ftime date("D, d M Y H:i:s T"filemtime($filename));
$range 0;
$handle = @fopen($filename"rb");

  if (!
$handle){
    
header ("HTTP/1.0 403 Forbidden");
    exit;
  }
  
  if (
$_SERVER["HTTP_RANGE"]) {
      
$range $_SERVER["HTTP_RANGE"];
      
$range str_replace("bytes="""$range);
      
$range str_replace("-"""$range);
      if (
$range) {
          
fseek($handle$range);
      }
  }
    if (
$range) {
    
header("HTTP/1.1 206 Partial Content");
  } else {
    
header("HTTP/1.1 200 OK");
  }
    
header("Content-Disposition: attachment; filename=\"{$filename}\"");
  
header("Last-Modified: {$ftime}");
  
header("Content-Length: ".($fsize-$range));
  
header("Accept-Ranges: bytes");
  
header("Content-Range: bytes {$range}-".($fsize 1)."/".$fsize);
if(
$fsize>=$range){unlink($filename);}  
  if(isset(
$_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
    
Header('Content-Type: application/force-download');
  else
    
Header('Content-Type: application/octet-stream');
  
  while(!
feof($handle)) {
      
$buf fread($handle,512);
      print(
$buf);
  }
    
fclose($handle);
  
?>

   
 
 автор: pissed   (30.05.2008 в 01:47)   письмо автору
 
   для: pissed   (30.05.2008 в 01:32)
 

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования