Перенос файлов [php]
Подскажите мне как сделать скрипт для переноса файла с одного сервака на другой? Вроде скрипт-то должен быть простой, а у меня что-то не получается...
Исходный файл будет открываться по http-протоколу и сохраняться в директорию там, где сам скрипт находится, как это сделать?
P.S. я не очень опытен в php, но мне кажется что это не важно - формат файлов - mp3
Исходный файл будет открываться по http-протоколу и сохраняться в директорию там, где сам скрипт находится, как это сделать?
P.S. я не очень опытен в php, но мне кажется что это не важно - формат файлов - mp3
Даже самое длинное путешествие начинается с первого шага.
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
shpi0, тебе нужно два скрипта, на каждом сервере по одному.
Тот, с которого переносится: читает файл и просто выводит его (посимвольно на экран).
Тот, который читает: обращается по адресу того, кто выдаёт, считывает полностью страницу и сохраняет её в файл.
Если не будет проблем с кодировкой и чтение с URLа (или Socket-Connection) не закрыто - то должно быть довольно просто.
sendfile.php
getfile.php
P.S. Это если на получающем сервере разрешено чтение файла по HTTP протоколу, если нет - нужно попробовать создать SocketConnection.
P.P.S. Пробовал на разных кодировках на отправителе/получателе, проблем не возникло.
Тот, с которого переносится: читает файл и просто выводит его (посимвольно на экран).
Тот, который читает: обращается по адресу того, кто выдаёт, считывает полностью страницу и сохраняет её в файл.
Если не будет проблем с кодировкой и чтение с 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.P.S. Пробовал на разных кодировках на отправителе/получателе, проблем не возникло.
>>> Oscar, Пробовал на разных кодировках на отправителе/получателе, проблем не возникло.
а причём тут кодировка
а причём тут кодировка

Спасибо, все круто работает и без первого скрипта 

Даже самое длинное путешествие начинается с первого шага.
Только есть одно "но" - чтоб файл перенести, надо создать файл с таким же именем на сервере, куда переносят...
Даже самое длинное путешествие начинается с первого шага.
мне-то известно, какой файл мне надо перекачать, т.к. это оба моих сервера, я хостинг меняю и не хочу свой трафик тратить.
Я о том говорил, что чтобы перекачать файл 1.mp3 с передающего сервара, надо на сервере-приемнике создать файл с именем 1.mp3
Я о том говорил, что чтобы перекачать файл 1.mp3 с передающего сервара, надо на сервере-приемнике создать файл с именем 1.mp3
Даже самое длинное путешествие начинается с первого шага.
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
shpi0, кажется, я понимаю.
Теоретически, ф-ция "fopen('w')": ... Если файл не существует - пробует его создать.
Практически же, мне тоже пришлось создать файл на сервере приёмнике.
Но это должно зависеть от глобально разрешения пользователю, под которым запускается с Веба скрипт "getfile", писать на сервер (в свою папку).
Теоретически, ф-ция "fopen('w')": ... Если файл не существует - пробует его создать.
Практически же, мне тоже пришлось создать файл на сервере приёмнике.
Но это должно зависеть от глобально разрешения пользователю, под которым запускается с Веба скрипт "getfile", писать на сервер (в свою папку).