Большое спасибо, надеюсь на помощь знатоков.
<?php
set_time_limit(0);
error_reporting(0);
$f_ftp = 'ftp.txt';
$dir = 'files';
$ftp = file($f_ftp);
$files = scandir($dir);
function put_file ($data_ftp, $dir, $file)
{
echo $data_ftp.' : '.$file;
$data_ftp = 'ftp://'.$data_ftp;
$data = parse_url($data_ftp);
$connect = ftp_connect($data[host]);
if($connect)
{
$res = ftp_login($connect, $data[user], $data[pass]);
if($res)
{
ftp_pasv($connect, true);
$put = ftp_put($connect, $file, $dir.'/'.$file, FTP_ASCII);
if($put) {echo ': <span style="color:#009900; font-weight:bold">Load</span><br>';}
else echo ': <span style="color:#FF0000; font-weight:bold">No put</span><br>';
}
else echo ': <span style="color:#FF0000; font-weight:bold">No login</span><br>';
ftp_close($connect);
}
else echo ': <span style="color:#FF0000; font-weight:bold">No connect</span><br>';
}
foreach ($ftp as $data_ftp)
{
for ($i = 2; $i < count($files); $i++)
{
put_file(trim($data_ftp), $dir, $files[$i]);
}
echo '<br>';
}
?>
Спустя 6 минут, 8 секунд (20.03.2010 - 12:28) Семён написал(а):
Честно сказать, через ftp_connect ниразу не делал.
CURL гораздо удобнее:
}
CURL гораздо удобнее:
<form action="curlupload.php" method="post" enctype="multipart/form-data">
<div>
<label for="upload">Select file</label>
<input name="upload" type="file" />
<input type="submit" name="Submit" value="Upload" />
</div>
</form>
if (isset($_POST['Submit'])) {
if (!empty($_FILES['upload']['name'])) {
$ch = curl_init();
$localfile = $_FILES['upload']['tmp_name'];
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, 'ftp://ftp_login:password@ftp.domain.com/'.$_FILES['upload']['name']);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);
if ($error_no == 0) {
$error = 'File uploaded succesfully.';
} else {
$error = 'File upload error.';
}
} else {
$error = 'Please select a file.';
}
}
Спустя 19 минут, 36 секунд (20.03.2010 - 12:48) Guest написал(а):
нет, это немного не то. мне нужно мой скрипт подправить, чтобы загружал непосредственно в папку, которая есть на сервере, название папки рандомное скажем так.
Спустя 1 час, 25 минут, 40 секунд (20.03.2010 - 14:14) Nikitian написал(а):
ftp_nlist() получает список файлов и директорий, ftp_chdir() переходит в выбранный каталог. если ftp_chdir() не получился, значит это файл или закрытый каталог
Спустя 3 часа, 18 минут, 50 секунд (20.03.2010 - 17:32) Guest написал(а):
Цитата (Nikitian @ 20.03.2010 - 11:14) |
ftp_nlist() получает список файлов и директорий, ftp_chdir() переходит в выбранный каталог. если ftp_chdir() не получился, значит это файл или закрытый каталог |
как сие связать теперь с моим скриптом

Спустя 17 часов, 45 минут, 7 секунд (21.03.2010 - 11:18) Nikitian написал(а):
Как-то так:
<?php
set_time_limit(0);
error_reporting(0);
$f_ftp = 'ftp.txt';
$dir = 'files';
$ftp = file($f_ftp);
$files = scandir($dir);
function put_file ($data_ftp, $dir, $file)
{
echo $data_ftp.' : '.$file;
$data_ftp = 'ftp://'.$data_ftp;
$data = parse_url($data_ftp);
$connect = ftp_connect($data[host]);
if($connect)
{
$res = ftp_login($connect, $data[user], $data[pass]);
if($res)
{
$list = ftp_nlist($res, '.');
if(is_array($list) && sizeof($list)>0)
{
$flag=false;
while(!$flag)
{
$dir=$list[mt_rand(0,sizeof($list)-1)];
if($dir!='.' && $dir!='..' && ftp_chdir($res,$dir))
$flag=true;
unset($list[array_search($dir,$list)]);
if(sizeof($list)==0)
{
$flag=true;
$dir=false;
}
}
if($dir===false)return false;//Нет директорий там, куда законнектились
ftp_cdup($res);
}
ftp_pasv($connect, true);
$put = ftp_put($connect, $file, $dir.'/'.$file, FTP_ASCII);
if($put) {echo ': <span style="color:#009900; font-weight:bold">Load</span><br>';}
else echo ': <span style="color:#FF0000; font-weight:bold">No put</span><br>';
}
else echo ': <span style="color:#FF0000; font-weight:bold">No login</span><br>';
ftp_close($connect);
}
else echo ': <span style="color:#FF0000; font-weight:bold">No connect</span><br>';
}
foreach ($ftp as $data_ftp)
{
for ($i = 2; $i < count($files); $i++)
{
put_file(trim($data_ftp), $dir, $files[$i]);
}
echo '<br>';
}
Спустя 9 часов, 2 минуты, 47 секунд (21.03.2010 - 20:20) Guest написал(а):
Цитата (Nikitian @ 21.03.2010 - 08:18) |
Как-то так:<?php |
заливает рядом с папкой, не переходит как бы во внутрь.
я когда подключаюсь вручную, вижу что там есть папка и лежит наш файл рядом с ней, открываю эту папку в ней пусто, то есть не загружает.