как определить на php пользователь докачал фаил или нет?
<?
$file="";
$host="";
$target="";
$refer=""; // чтобы
$handle=fopen($file,"r");
echo "
POST $target HTTP/1.0\r\n
Host: $host\r\n
Referer: $refer\r\n
Cookie: income=1\r\n
Content-Type: multipart/form-data; boundary=1BEF0A57BE110FD467A\r\n
Content-Length: 491\r\n
\r\n
--1BEF0A57BE110FD467A\r\n
Content-Disposition: form-data; name="mp3_headr"\r\n
\r\n
Происходит закачка mp3\r\n
--1BEF0A57BE110FD467A\r\n
Content-Disposition: form-data; name="mp3_file"; filename="$file"\r\n
Content-Type: application/octet-stream\r\n
Content-Transfer-Encoding: binary\r\n
\r\n
--1BEF0A57BE110FD467A--\r\n
";
while (!feof ($file)) {
$buffer = fgets($file, 4096);
echo $buffer;
}
$fclose($file);
?>
как можно проконтролировать, что он его скачал полностью?
Возможно ли использование вот этой ф-ции:
connection_aborted(),
ссылка на мануал:
http://ru.php.net/manual/ru/features.connection-handling.php
Во вторых поля реферер и хост должен отдавать пользователь серверу, а не сервер пользователю. Из можно смело убрать.
Я бы попоробовал использовать Output Buffering для такого контроля.
Цитата:
Originally posted by mike
Я бы попоробовал использовать Output Buffering для такого контроля.
Я бы попоробовал использовать Output Buffering для такого контроля.
а по подробней можно?
Код:
/* если закачка происходит с начала иначе число байт для смещения */
$seek = 0;
$FileName = "1.mp3";
$file_size = filesize($FileName)-$seek;
if ($file_size > 0)
{
header("Content-Length: $file_size");
header("Content-Disposition: form-data; name=mp3_file; filename=$FileName");
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
$handle = fopen($FileName,"r");
fseek($handle, $seek,SEEK_SET);
while (!feof ($handle))
{
echo fgets($handle, 4096);
}
$fclose($handle);
}
$seek = 0;
$FileName = "1.mp3";
$file_size = filesize($FileName)-$seek;
if ($file_size > 0)
{
header("Content-Length: $file_size");
header("Content-Disposition: form-data; name=mp3_file; filename=$FileName");
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
$handle = fopen($FileName,"r");
fseek($handle, $seek,SEEK_SET);
while (!feof ($handle))
{
echo fgets($handle, 4096);
}
$fclose($handle);
}
эт по поводу скрипта закачки, а как проверить? да никак ты не проверишь... если только не проверять, не оборвалось ли соединение в цикле while, как это на пхп сделать не знаю
PS не ну ты посмотри ввел меня в заблуждение! функции feof, fgets и т.д. используют хэндл а не имя файла