|
|
|
|
|
для: 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: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. | |
|
|
|
|
|
|
|
для: BinLaden
(30.05.2008 в 00:52)
| | а что если как нибудь по частам отдавать? как последняя часть отдана то полностью или не пойдет? | |
|
|
|
|
|
|
|
для: 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);
}
|
Можно ли узнать полностью пользователь скачал файл или нет? | |
|
|
|
|