[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Копирование файла с одного сервера на другой
Amply
ДД!
Имеется такая форма:
user posted image
При помощи скрипта написано, чтобы при выборе того или иного офиса выводился список камер, относящихся именно к этому офису.

К примеру: Пользователь выбирает в первом селекте "Заельцовский офис", во втором селекте "Камера 2". Вводит дату 07.06.11, время с 10:00 по 10:05. Нажимает кнопку "отправить".
После этого система автоматически заходит на удаленный сервер заельцовского офиса(скажем 192.168.7.222). Там идет следующая структура папок cam1-камера 1,cam2-камера 2 и т.д. Т.к. мы выбрали камеру 2 в селекте, то система заходит в папку cam2. В этой папке подпапки разбиты по датам, для нашего случая 20110607(т.е. соответствует дате 07.06.11). В ней уже подпапки по времени-часу, в нашем случае 10. Из этой папки мы отбираем файлы,которые записывались в период времени с 10:00 по 10:05(20110607-100009_D.avi,20110608-100259_D.avi,20110608-100353_D.avi и т.п. ).
Нужно чтобы эти файлы записались на сайт ,скажем в папку /video и сформировался файл spisok.xml в таком виде:

<track>
<title>
20110607-100009_D.avi</title>
<creator></creator>
<location>
\video\20110607-100009_D.avi</location>
<image></image>
<duration></duration>
</track>
<track>
<title>
20110608-100259_D.avi</title>
<creator></creator>
<location>
\video\20110608-100259_D.avi</location>
<image></image>
<duration></duration>
</track>

.....


Подскажите как такое можно провернуть?Что использовать?С чего начать?



Спустя 17 минут, 29 секунд (27.06.2011 - 10:46) XCross написал(а):
Скопировать можно множеством способов. Легче всего через ftp(если на сервере есть доступ). Список сформировать через SimpleXML

Спустя 2 минуты, 15 секунд (27.06.2011 - 10:48) Guest написал(а):
а можно поподробнее?
как написать условие, чтобы по фтп только по определенным условиям файлы закачивались?

Спустя 5 минут, 20 секунд (27.06.2011 - 10:53) XCross написал(а):
А еще проще скопировать функцией copy

Ну ввел пользователь, допустим, дату 01.01.2011(что наврятли, новый год все-таки). В скрипте удаляете точки и форматируете как надо, потом отформатированную строку подставляете в путь до видеофайла. После чего копируете функцией copy куда нужно и использую SimpleXML формируете xml-документ.

Спустя 26 секунд (27.06.2011 - 10:54) kovaldm написал(а):
Ачем file_get_conents() не подходит?

Спустя 3 минуты, 23 секунды (27.06.2011 - 10:57) XCross написал(а):
А тем, что нужно не прочитать(тем более видео), а скопировать. wink.gif

Спустя 13 минут, 57 секунд (27.06.2011 - 11:11) Amply написал(а):
лучше было бы конечно на самом деле прочитать с сервера, а не копировать. wink.gif

Спустя 8 минут, 15 секунд (27.06.2011 - 11:19) kristall написал(а):
Я бы сделал так:
1) По данным формы формируется GET или POST-запрос, что то типа
http://zaelec.office.ru/kuku.php?date=1025...ime2=1005&cam=2

2) Заелецкий сервер этот запрос обрабатывает и выдает нужный контент.

Из бонусов, все это можно пустить по https, чтобы никто ваши секретные видео не перехватил.

Спустя 2 минуты, 42 секунды (27.06.2011 - 11:22) Amply написал(а):
Хотя....правильно,надо скопировать.
Цитата
А еще проще скопировать функцией copy

Ну ввел пользователь, допустим, дату 01.01.2011(что наврятли, новый год все-таки). В скрипте удаляете точки и форматируете как надо, потом отформатированную строку подставляете в путь до видеофайла. После чего копируете функцией copy куда нужно и использую SimpleXML формируете xml-документ.


Можно это на примере кода?Идея понятно, но как это сделать!???

И еще вопрос разве вместо использования SimpleXML нельзя сделать что-то типа
$fp = fopen("spisok.xml", "a"); // Открываем файл в режиме записи
ftruncate($fp, 0) // очищаем файл
$mytext = "Записываем что надо\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла


??

Спустя 1 минута, 43 секунды (27.06.2011 - 11:24) XCross написал(а):
Тебя не поймешь.

Спустя 11 минут, 13 секунд (27.06.2011 - 11:35) Guest написал(а):
Цитата
Из бонусов, все это можно пустить по https, чтобы никто ваши секретные видео не перехватил.


Это итак во внутренней сети. Поэтому за это я не опасаюсь)

Спустя 51 минута, 35 секунд (27.06.2011 - 12:26) Guest написал(а):
kmaks , подскажи плиз как правильно написать?я новичок!

Спустя 6 минут, 52 секунды (27.06.2011 - 12:33) Amply написал(а):
 <?
$host = "ftp://my_server"; //ваш сервер
$connect = ftp_connect($host);
$user = "login"; //ваш логин
$password = "password"; //ваш пароль
$res = ftp_login($connect,$user,$password);
$get_file = "cam2\video\20110607\17\20110607-171745_D.avi"; //файл который нам нужен
$save_file = "20110607-171745_D.avi"; //имя под которым сохраняем
ftp_get($connect,$get_file,$save_file,FTP_BINARY); //выполняем функцию ftp_get

?>

пока сделано только это. как в переменную $get_file передать список тех файлов, которые мне нужны с необходимыми путями? ммм....думаю массивом наверное нужно сделать как-то!?

Спустя 30 минут, 8 секунд (27.06.2011 - 13:03) XCross написал(а):
Может поможет http://www.php.su/functions/?ftp-mdtm


Смори как я себе это представляю.

<?php

function
format_date($string){
return substr($string,6,4).substr($string, 3,2).substr($string,0,2);
}

$folder = format_date('05.06.2011');


?>


Форматируешь дату и подставляешь в путь. Дальше, юзаешь функцию
http://www.php.su/functions/?ftp-nlist

По полученному пути смотришь какие файлы есть в директории. Дальше функция ведь возвращет массив, пробегаешся по нему, и использую функцию , которую я дал в начале этого поста узнаешь время модификации файла. Тебе нужно будет форматировать как-то дату, чтоб можно было сравнить и если все совпало, то копируешь.

Возможно, получилось непонятно, так как быстро писал,.

Спустя 14 минут, 30 секунд (27.06.2011 - 13:18) XCross написал(а):
Я ща кое что подумаю исправлю

Спустя 1 день, 26 минут, 52 секунды (28.06.2011 - 13:45) Guest написал(а):

$dateuser = $_POST['date'];
$dateInWriteFormat =date("Ymd", strftime($dateuser));


я сделала так. то у меня вместо того, чтобы нормально дата преобразовывалась в формат Ymd, преобразовывает в фиг пойми что "19700101".
Как можно отбросить эти ненужные символы в дате?

Спустя 55 секунд (28.06.2011 - 13:46) Guest написал(а):
ой, я использовала strtotime, а не strftime на самом деле)

Спустя 23 часа, 38 минут, 33 секунды (29.06.2011 - 13:24) Guest написал(а):
Получилось так:
 <?php
$office = $_POST['office'];
$userCamNumber = $_POST['cam'];
$date = $_POST['date'];
$timeStart = $_POST['timeStart'];
$timeEnd = $_POST['timeEnd'];
$officeIps = array( 'zlc' => '192.168.7.245', 'okt' => '192.168.7.246' );
$camNumbers = array('cam1' => 'cam1', 'cam2' => 'cam2', 'cam3' => 'cam3', 'cam4' => 'cam4');
$officeIp = $officeIps[$office];
$camNumber = $camNumbers[$userCamNumber];
//$dateuser = strtotime ($date);
$dateInWriteFormat =date("Ymd", strtotime ($date));
$timeHourInWriteFormat = date("H", strtotime($timeStart));

$timeStartInWriteFormat = date("-His", strtotime($timeStart));
$timeEndInWriteFormat= date("-His", strtotime($timeEnd));

$nameStart = $dateInWriteFormat.$timeStartInWriteFormat;
$nameEnd = $dateInWriteFormat.$timeEndInWriteFormat;

$host = $officeIp;
$connect = ftp_connect($host);
$user = "oper"; //ваш логин
$password = "_sysLAB123350"; //ваш пароль
$res = ftp_login($connect,$user,$password);
$get_path = " \\".$camNumber."\\video\\".$dateInWriteFormat."\\".$timeHourInWriteFormat."\\"; //путь который нам нужен

if ((!$connect) || (!$res)) {
die("Не удалось подключиться к FTP серверу!");
}

//echo "Текущая директория: " . ftp_pwd($connect) . "\n";
if (ftp_chdir($connect, "$camNumber/video/$dateInWriteFormat/$timeHourInWriteFormat")) {
//echo "Новая текущая директория: " . ftp_pwd($connect) . "\n";
} else {
echo "Не удалось сменить директорию\n";
}
$files = ftp_nlist($connect, ".");
//var_dump($files);

foreach($files as $file)
{
if (strncmp($name, $file, 13))
{
$get_ftp_file = $get_path.$file;
//ftp_get($connect, $get_ftp_file, $name, FTP_BINARY); //выполняем функцию ftp_get
echo "$name|||$file ТУТ: $get_ftp_file \n";
}
}




// закрытие соединения
ftp_close($connect);

?>


надо чтобы $name содержала в себе тока файлы с условием грубо говоря от $nameStart по $nameEnd , а потом функцией strncmp($name, $file, 13) проверялась.
Как так сделать?

Спустя 17 часов, 15 минут, 49 секунд (30.06.2011 - 06:40) Guest написал(а):
kmaks
Есть идеи?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.