PDA

Просмотр полной версии : Перекачка файлов ftp2ftp


fuckthesystem
16.12.2007, 20:20
поиск перерыл, нниче не нашел.
вобщем нужен скрипт для перекачки файлов с одного фтп на другой, т.е. не тратя своего трафа.
где то видел, но не помню названия... мож кто знает?

Piflit
16.12.2007, 20:23
из шелла от рст возьми

Ali_MiX
16.12.2007, 20:24
Вот этот.

<?php
if(isset($HTTP_POST_VARS['in']))
{
$fn = $HTTP_POST_VARS['in'];
$handle = fopen ($fn, 'rb');
$contents = "";
if(!$handle)
echo 'Не могу открыть исходный файл';
else
{
while(!feof($handle))
{
$data = fread($handle, 8192);
$contents .= $data;
}
fclose ($handle);

// './download/' можно заменить, например, на $HTTP_GET_VARS['path']
$handle = fopen ('./download/' . basename($fn), 'wb');
if(!$handle)
echo 'Не могу создать записать файл';
else
{
fwrite($handle, $contents);
fclose($handle);
echo 'Передача завершена';
}
}
}
?>

<FORM ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD="post">
<INPUT TYPE="hidden" NAME="act" VALUE="send">
URL:<BR />
<INPUT TYPE="text" NAME="in" SIZE="64"><BR />
<INPUT TYPE="submit" VALUE=" Send ">
</FORM><BR />
</BODY></HTML>

gibson
16.12.2007, 22:41
вот если что подправь как нужно

<?php

echo '<html>
<table border="0" width="90%" align="center">
<form action="index.php" method="post">
<tr >
<td colspan="2" align="center" >
<b><font size="3">Скрипт для скачивания файла с одного сервера на другой<font></b>
</td>
</tr>
<tr>
<td colspan="2" align="center"><b><font color=red size=2>Основные настройки</font></b></td>
</tr>
<tr>
<td><b><font color=#C0C0C0>Файл для скачивания</font><b></td>
<td><input type="text" name="file" class=ftpwork value="file.sql"></td>
</tr>
<tr>
<td><b><font color=#C0C0C0>Путь до директории с файлом относительно сайта</font></b></td>
<td><input type="text" name="path" class=ftpwork value="/downloads"></td>
</tr>
<tr>
<td><b><font color=#C0C0C0>Хост, с которого будем сливать файл</font></b></td>
<td><input type="text" name="host" class=ftpwork value="server.ru"></td>
</tr>
<tr>
<td colspan="2" align="center"><b><font color=#FF0000>Настройки FTP</font></b></td>
</tr>
<tr>
<td><b><font color=#C0C0C0>FTP хост, на который будем заливать файл</font></b></td>
<td><input type="text" name="ftphost" class=ftpwork value="ftp.server.ru"></td>
</tr>
<tr>
<td><b><font color=#C0C0C0>FTP логин<font></b></td>
<td><input type="login" name="login" class=ftpwork value="ftpuser"></td>
</tr>
<tr>
<td><b><font color=#C0C0C0>FTP пароль<font></b></td>
<td><input type="pass" name="pass" class=ftpwork value="ftppass"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Отправить" class="ok"></td>
</tr>
<tr>
<td colspan="2" align="center"><b>
<font color=#FFFFFF>Coded by </b><a href="http://p-range.info"><b>p-range</b></a></td>
</tr>
</form>
</table>';
if(isset($_POST['file']) && isset($_POST['path'])
&& isset($_POST['host']) && isset($_POST['ftphost'])
&& isset($_POST['login']) && isset($_POST['pass']))
{
$file = $_POST['file']; // файл для скачивания
$path = $_POST['path']; // путь до директории с файлом относительно сайта
$host = $_POST['host']; // Хост, с которого будем сливать файл
$ftphost = $_POST['ftphost']; // FTP хост, на который будем заливать файл
$login = $_POST['login']; // FTP логин
$pass = $_POST['pass']; // FTP пароль
// открыли соединение
$so = fsockopen($host, 80, &$errno, &$errstr, 30);
// послали GET форму (простой URL + указание вирт. хоста)
fputs($so,"GET $path/$file HTTP/1.0\nHOST: $host\n\n");

// читаем все, пока не наступит "конец заголовка" (т.е. начало документа)
// если наступит, то со след. байта начнется документ
while(fgets($so,2048)!="\r\n" && !feof($so));

unset($buf);
// читаем документ в переменную
while(!feof($so)) $buf.=fread($so,2048);
// Готово. В переменной $buf храниться скаченный документ (т.е. файл)
// Максимум можно читать порциями по 64K-1байт

// закрываем сокет
fclose($so);
echo "Download file, size ".strlen($buf)." bytes.<br>"; flush();

// используем скаченный файл (в переменной) по назначению...
$f=fopen($file,"wb+");
fwrite($f,$buf,strlen($buf));
fclose($f);

$ftp = ftp_connect($ftphost);
if($ftp)
{
@$res = ftp_login($ftp,$login,$pass);
if($res)
{
$fp = fopen($file, "r");
$fput = ftp_fput($ftp, $file, $fp, FTP_BINARY);
fclose($fp);
if(!$fput)
{
echo "<font color='#cc1233'>Error transfering</font>";
ftp_quit($ftp);
}
else
{
echo "<font color='#666666'>Success transfering <b>".$file."</b></font>";
}
}
else
{
echo "<font color='#cc1233'>Error login</font>";
ftp_quit($ftp);
}
}
}
?>

fuckthesystem
17.12.2007, 01:08
блин, выкидывает вот такую хрень:
Warning: fopen() [function.fopen]: failed to open stream: No route to host in *** on line 5

эт типа хостинг хреновый или подправить чего?

AFoST
17.12.2007, 01:16
Это или хостинг хреновый(на нем отключены сокеты), или не находится хост, к которому обращаешься.

lsass.exe
17.12.2007, 01:23
блин, выкидывает вот такую хрень:
Warning: fopen() [function.fopen]: failed to open stream: No route to host in *** on line 5

эт типа хостинг хреновый или подправить чего?
проверь работоспособность конечного хоста