Страница 1 из 2
Перенос файлов [php]
Добавлено: 24 окт 2005, 11:33
shpi0
Подскажите мне как сделать скрипт для переноса файла с одного сервака на другой? Вроде скрипт-то должен быть простой, а у меня что-то не получается...
Исходный файл будет открываться по http-протоколу и сохраняться в директорию там, где сам скрипт находится, как это сделать?
P.S. я не очень опытен в php, но мне кажется что это не важно - формат файлов - mp3
Добавлено: 24 окт 2005, 20:14
Oscar
shpi0, тебе нужно два скрипта, на каждом сервере по одному.
Тот, с которого переносится: читает файл и просто выводит его (посимвольно на экран).
Тот, который читает: обращается по адресу того, кто выдаёт, считывает полностью страницу и сохраняет её в файл.
Если не будет проблем с кодировкой и чтение с URLа (или Socket-Connection) не закрыто - то должно быть довольно просто.
sendfile.php
Код: Выделить всё
<?php
$filename = "test.mp3";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
echo $contents;
?>
getfile.php
Код: Выделить всё
<?php
$filename = "test.mp3";
$handle = fopen("http://yourServer/sendfile.php", "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $contents) === FALSE) {
echo "Cannot write in file ($filename)";
exit;
}
echo "File successfully written! ($filename)";
fclose($handle);
} else {
echo "File $filename is not writable!";
}
?>
P.S. Это если на получающем сервере разрешено чтение файла по HTTP протоколу, если нет - нужно попробовать создать SocketConnection.
P.P.S. Пробовал на разных кодировках на отправителе/получателе, проблем не возникло.
Добавлено: 24 окт 2005, 20:38
Oscar
Тю, блин, дурак я.
На отправителе PHP-скрипт не обязателен ))
Можно ж ведь сразу читать по нужному адресу ))))
Это я думал на тот случай, если файл ниже Веб-видимой области))
Добавлено: 24 окт 2005, 22:27
berkut
>>>
Oscar, Пробовал на разных кодировках на отправителе/получателе, проблем не возникло.
а причём тут кодировка

Добавлено: 25 окт 2005, 02:44
Oscar
berkut, мало ли ))
Добавлено: 25 окт 2005, 08:46
shpi0
Спасибо, все круто работает и без первого скрипта

Добавлено: 25 окт 2005, 08:48
shpi0
Только есть одно "но" - чтоб файл перенести, надо создать файл с таким же именем на сервере, куда переносят...
Добавлено: 25 окт 2005, 10:14
Oscar
shpi0,
а как ты узнаёшь какой файл ты скачиваешь с отдающего сервера?
Передавай это в переменной $_REQUEST['toget'] (getfile.php?toget=test.mp3)
Добавлено: 25 окт 2005, 10:18
shpi0
мне-то известно, какой файл мне надо перекачать, т.к. это оба моих сервера, я хостинг меняю и не хочу свой трафик тратить.
Я о том говорил, что чтобы перекачать файл 1.mp3 с передающего сервара, надо на сервере-приемнике создать файл с именем 1.mp3
Добавлено: 25 окт 2005, 10:24
Oscar
shpi0, кажется, я понимаю.
Теоретически, ф-ция "fopen('w')": ... Если файл не существует - пробует его создать.
Практически же, мне тоже пришлось создать файл на сервере приёмнике.
Но это должно зависеть от глобально разрешения пользователю, под которым запускается с Веба скрипт "getfile", писать на сервер (в свою папку).