Перейти к публикации

Загрузка файлов на FTP дополнительного сервера


Рекомендованные сообщения

Дело в том, что я имею крупный проект, у меня хранится много информации (графика, видео, mp3). И все это находится в директории /uploads/, мне бы хотелось сделать так, чтобы при загрузке какой-либо информации я мог выбрать на какой сервер загрузить (т.е. u.site.com, f.site.com и др.) и прошу заметить то, что эти поддомены будут находиться на другом сервере.

Это очень похоже на ftp-files 1.5, который отказывается работать. Кто готов сделать такой модуль? :)

Ссылка на сообщение
Поделиться на других сайтах

Хм...разве изначально модуль ftp-files не был платным? Разве у него нет автора? Почему писать с нуля то что уже есть и надо только подправить?

Ссылка на сообщение
Поделиться на других сайтах

Хм...разве изначально модуль ftp-files не был платным? Разве у него нет автора? Почему писать с нуля то что уже есть и надо только подправить?

Я буду согласен и на подправку. Если готовы помочь - оставьте контакты.

Ссылка на сообщение
Поделиться на других сайтах

Это очень похоже на ftp-files 1.5,

Я как-то смотрел этот модуль. Очень много изменений надо сносить в код движка, что не есть гуд при последующих обновлениях. По хорошему, нужно нечто подобное, но с гораздо наименьшим вмешательством в код движка да еще и в БД изменения вносить.... Сам озадачен необходимостью такого модуля...

Изменено пользователем IgorA100
Ссылка на сообщение
Поделиться на других сайтах

Это очень похоже на ftp-files 1.5

написал автору скрипта, но он им уже не занимается..

В общем посмотрел я этот скрипт сегодня более досконально. Навскидку прикрутил его к 9.2, но есть еще пара вопросов у меня. Если будет время - на днях еще копну. И если ве будет нормально, выложу адаптированную версию...

Ссылка на сообщение
Поделиться на других сайтах

Блин, кто знает как открыв дочернее окно при его закрытии вернуть в родительское окно определенное значение?

К примеру открываю дочернее окно:

<div><input class="buttons" type="button" value = "..." onclick="mywindow=window.open('ftp/ftp.php' ,'','height=300, width=300' );">
В родительском имеем код:
<input id="ftpput" class="edit bk" type="text" name="ftpserverfile" size=42>

Как сделать так, чтобы при его закрытии дочернего в родительском окне значение поле "ftpserverfile" стало равно "ААА" и соответственно с отображением на экране ?

Ссылка на сообщение
Поделиться на других сайтах

Самый простой способ, который мне известен - передать любым из запросов (ГЕТ или ПОСТ) переменные через пути, напримерр, ГЕТОМ, а в пхп отловить этот запрос и передать в окно. Другие способы не знаю, да вроде других и не существует, если только эти окна на одной странице формируются, тогда через простой JS (пути ДОМ), думаю, можно метки передать, но для этого нужно быть спецом либо в JS, либо в аяксе. :) Зачем вообще такой гемор нужен? :D

Ссылка на сообщение
Поделиться на других сайтах

Зачем вообще такой гемор нужен?

Думаю сделать управление папками по ФТП, с выбором папки куда грузить файл, если нет такой папки - создать ее и т.п. И все это в отдельном окне делать, вызов которого буде происходить из files.php. Не городить же все это в одном стандартном окне загрузки файлов :)

тогда через простой JS (пути ДОМ)

Да, что-то такое думал сделать, но .......

Ссылка на сообщение
Поделиться на других сайтах

Не городить же все это в одном стандартном окне загрузки файлов

Всё управление можно сделать автоматом, без всяких окон и в одной странице. :)

Ссылка на сообщение
Поделиться на других сайтах

Мысли в студию

Уже написал, видимо, готовый код нужен? :D

error_reporting(E_ALL);

ini_set('display_errors',TRUE);

ini_set('display_startup_errors',TRUE);

#set_error_handler('my_error_handler',E_ALL);


$dir = $_SERVER['DOCUMENT_ROOT'].'/uploads/headers';

if (!is_dir($dir)) {

  if (!mkdir($dir,0777)) die("Cat't creation folder: $dir/.");

  if (!mkdir("$dir/thumbs",0777)) die("Cat't creation folder: $dir/thumbs/.");

}

$myfiles['allow'] = 'jpg,jpeg,png,gif';

$myfiles['list'] = glob("$dir/*.{{$myfiles['allow']}}",GLOB_BRACE);

$myfiles['count'] = count($myfiles['list']);

$thumbs['maxsize_width'] = 100;		 #Ðàçìåð ïîñòåðà.

$thumbs['maxsize_height'] = 100;	 #Ðàçìåð ïîñòåðà.

$poster['maxsize_width'] = 1024;	 #Ðàçìåð ïîñòåðà.

$poster['maxsize_height'] = 1024;	 #Ðàçìåð ïîñòåðà.

$quality = 85;


if (isset($_FILES['poster']) && is_array($_FILES['poster']) && $_FILES['poster']!=null) {

  $err_poster = false;

  ...

}

$get = (isset($_GET['go']) && trim($_GET['go'])!='' && strpos($_GET['go'],'.')!==false)?trim($_GET['go']):false;

if ($get) {

  define('DATALIFEENGINE',true);

  if (!defined('ROOT_DIR')) {

	define('ROOT_DIR',$_SERVER['DOCUMENT_ROOT']);

	define('ENGINE_DIR',ROOT_DIR.'/engine');

  }

  include_once ENGINE_DIR.'/data/config.php';

  include_once ENGINE_DIR.'/api/api.class.php';

  $count = $db->super_query("SELECT COUNT(*) AS count FROM ".PREFIX."_header");

  $count = $count['count'];

  if (!$count) $db->query("INSERT INTO ".PREFIX."_header VALUES ('$get')");

  else $db->query("UPDATE ".PREFIX."_header SET path='$get'");

  #unset($count,$get); $db->free(); $db->close(); exit();

} #else unset($get,$_GET,$_POST);


if ($get=="delete") {

...

} else if ($get=="upload") {

...

} else if ($get=="show_thumb") {

...

} else if ($get=="show_list") {

...

} else {

...

}

Вот пример вырезки кусочка кода из моего последнего мода: меняет шаб (шапку) сайта по клику на иконку шаба, появляется при наводе на миниатюру иконки кнопки и информация о шабе - можно удалить/изменить. Можно прямо на этой же странице опять же без перезагрузок показать шабы миниатюрами, либо вывести их список, тут же можно загрузить новый. Всё это делается на одной странице в админке в одном файлике php - всё сделал на автопилоте: кликнули - загрузился новый шаб, подвели мышку - показались доп. кнопки для редактирования/удаления "на лету", либо кликаем на миниатюру - "на лету" меняется шаб.

Аналогично можно сделать что угодно и как угодно - никаких привязок ни к ДЛЕ, ни к чему-либо еще. Остальное показать не могу - секрет Фирма, думаю, достаточно материала для написания похожего мода :D Примеров аякса полно в сети, хоть на чистом JS, хоть на библиотеках, например, Джиквери.

Ссылка на сообщение
Поделиться на других сайтах

Я вот на чем еще задумался....

Ведь через РНР все равно грузится вначале на сервак где стоит ДЛЕ, а уже оттуда перекачивается на ФТП, т.е. передача то все равно идет по HTTP. Почитал Гугла немного и наткнулся на это: http://pear.php.net/package/HTTP_Request2. По уму - надо бы замутить нечто такое, но не на каждом хостинге такое возможно, да и разбираться в этом надо еще дооооолго.

Ссылка на сообщение
Поделиться на других сайтах

Я вот на чем еще задумался....

Бросьте это гиблое дело :lol:

Ведь через РНР все равно грузится вначале на сервак где стоит ДЛЕ, а уже оттуда перекачивается на ФТП, т.е. передача то все равно идет по HTTP.

Файл, если нужно передать на другой сервер, никуда не закачивается, а сразу передается потоком на другой сервер через обычный аякс-запрос и, если запрос поступил, то на втором серваке этот файл сразу принимается хоть по открытому каналу, хоть с шифрованием. Для этого доступ к ФТП и прочее не нужно, всё в php работает и гораздо проще, самая простая функция получения файла - file_put_content(). Весь код буквально несколько строк занимает.

но не на каждом хостинге такое возможно

Если php нет на хостинге или нет прав на запись файла - то да, невозможно такое сделать, например, на хостинге Народ.ру. :)

Ссылка на сообщение
Поделиться на других сайтах

file_put_content()

Не, это не то.....

Есть сайт сделанный на ДЛЕ (да пофиг на чем....) хостится на "Хост1". Есть ФТПшник находящийся на "Хост2"

Задача: Скриптом находящимся на "Хост1" залить файл размером 1000Мб находящийся на локальной машине пользователя по протоколу FTP на "Хост2" минуя промежуточное сохранение временного файла на "Хост1". КАК такое реализовать? ;)

Ссылка на сообщение
Поделиться на других сайтах

Такс, свет в конце туннеля проявляется.

Основное вроде закончено, тестю :)

ЗЫ: Времени особо нет, все делаю урывками. Скорее всего к выходным или после них выложу то, что получилось. Основной недостаток - загрузка файла идет сначала на хостинг, а только потом перемещается на ФТП. Но для исправления этого момента нужно.... долго думать и читать :(

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Собственно вот: http://www.kentavr.com.ru/forum/viewtopic.php?f=28&t=166

Модуль готов, просьба потестить. В коде есть немного "мусора", но он не влияет на работу...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...