Эта тема на forum.dklab.ru


sesharim: Скачивание файлов с одного сервера, ну другой.
Здравствуйте, хочу организовать такую возможность, чтоб пользователь мог передать прямую ссылку на файл, скрипт скачал файл и сохранил у себя на сервере. Таким образом бесплатно можно скачать файл со своего внутреннего ресурса. Старался скрипт добить сам, и уже потом писать сюда. Но всё же не справился. И ещё такой вопрос, когда начинаю закачку на локальном хосте, процессор начинает подвисать, файл создается, но с размером в 0 байт, и изменений нет, лишь постоянно загружающаяся страница.
Подскажите, что не так?
Собственно:


<?php
header('Content-type: text/html; charset=UTF-8');
set_time_limit(9999);

class Timer {
var $start;
var $stop;

function start() {
$t = gettimeofday();
$this->start = $t[sec] * 1000000.0 + $t[usec];
}

function stop() {
$t = gettimeofday();
$this->stop = $t[sec] * 1000000.0 + $t[usec];
}

function elapsed() {
return ($this->stop - $this->start) / 1000000.0;
}
};

function copyToServer($file,$nfile) {
$fp = @fopen($file, "rb");
$fp2 = @fopen($nfile, "w");

while(!feof($fp)) {
$cont = fread($fp, filesize($fp));
fwrite($fp2, $cont);
}

fclose($fp);
fclose($fp2);
}


if (isset($_POST['download'])) {
$timer = new Timer();

$file = strrchr($_POST['url'], '/');
$newFile = $_SERVER['DOCUMENT_ROOT'].'/download';

if (!is_readable($newFile)) {
chmod($newFile, 0777);
}

$timer->start();
if (!copyToServer($file, $newFile.$file)) {
echo 'Ошибка!';
} else {
echo 'Файл успешно скачан, <a href="'.$newFile.$file.'"><b>скачать бесплатно !</b></a>';
}

echo $file;

$timer->stop();
echo $timer->elapsed();

}



?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Download</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link href="/png.css" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="http://www.snet.uz/favicon.ico">
</head>
<body>

<form action="index.php" method="post">
<table>
<tr>
<td>Ссылка:</td>
<td>
<input type="text" name="url" style="width:250px" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="download" value="Скачать" style="width:100%" />
</td>
</tr>
</table>
</form>

</body>
</html>

sesharim:

try {
copy($file, $newFile.$file);
$timer->stop();
echo 'Файл скачан';
} catch (Exception $e) {
echo $e->getMessage();
}

пробовал даже так, файл даже не появляется, но пишет что скопирован.
dimagolov:
sesharim, уберите собак и отлаживайте свой скрипт согдасно http://phpfaq.ru/debug

Эта тема на forum.dklab.ru