|
v7: Выгрузка файла по FTP на сайт | ☑ | ||
---|---|---|---|---|
0
Юрий Лазаренко
11.05.12
✎
14:50
|
Коллеги, с 7.7 не работал уже 4 года, все забыл. Формирую в обработке файл csv, сохраняю на локальный диск. Теперь необходимо его автоматически загрузить по фтп на сайт, дождаться окончания загрузки и открыть окно браузера с определенным адресом (чтобы запустилась обработка этого файла скриптом на сайте).
Напомните плиз, как в клюшках можно файл на фтп положить и отследить момент окончания его загрузки, чтобы не открыть окно браузера преждевременно. |
|||
1
Fragster
гуру
11.05.12
✎
14:52
|
U:\>ftp -?
Обмен файлами с компьютером, на котором запущена служба сервера FTP. FTP может использоваться интерактивно. FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-w:буфер] [-A] [узел] -v Отключение вывода на экран ответов с удаленного сервера. -n Отключение автоматического входа при начальном подключении. -i Отключение интерактивных запросов при передаче нескольких файлов. -d Включение отладочного режима. -g Отключение глобализации имен файлов (см. команду GLOB). -s:имя_файла Задание текстового файла, содержащего команды FTP, которые будут выполняться автоматически при запуске FTP. -a Использование локального интерфейса для привязки соединения. -A Анонимный вход в службу. -w:буфер Переопределение стандартного размера буфера передачи (4096). узел Задание имени или адреса IP удаленного узла, к которому необходимо выполнить подключение. Примечания: - команды MGET и MPUT принимают параметры Y/N/Q как YES/NO/QUIT. - для прекращения выполнения команд нажмите <Ctrl>+<C>. |
|||
2
Юрий Лазаренко
11.05.12
✎
14:54
|
(1) Прелестно, благодарю.
|
|||
3
andrewks
11.05.12
✎
14:56
|
dialmail.dll
|
|||
4
Юрий Лазаренко
11.05.12
✎
15:00
|
(3) Главное чтобы она корректно работала на разных машинах с разными виндами... И что-то на оф сайте пока не нашел описания со свойствами-методами.
|
|||
5
akaBrr
11.05.12
✎
15:10
|
(2) встроенный в винду фтп-клиент ничего не знает про пассивный режим работы сервера, может случиться облом у (0)
|
|||
6
andrewks
11.05.12
✎
15:10
|
(4) там в комплекте внятные примеры и als-файл
|
|||
7
155153144627
11.05.12
✎
15:15
|
sYsFTP.dll
|
|||
8
Юрий Лазаренко
11.05.12
✎
15:34
|
(6) Ок, спасибо, счас глянем
|
|||
9
Юрий Лазаренко
11.05.12
✎
19:18
|
(6) Да, хорошая dll-ка, все получилось. Спасибо за совет!!!
|
|||
10
Злопчинский
11.05.12
✎
19:19
|
ой блин... ща.. не спеши...
|
|||
11
Юрий Лазаренко
11.05.12
✎
19:21
|
(10) Ммммм?
|
|||
12
Злопчинский
11.05.12
✎
19:22
|
////****************************************************************************************************************************
////БЛОК ВЫГРУЗКИ НА ФТП ******************************************************************************************************* ////**************************************************************************************************************************** //ТекстВыгрузки = СоздатьОбъект("Текст"); //ТекстВыгрузки.ДобавитьСтроку("open " + "ИПадрес"); //ТекстВыгрузки.ДобавитьСтроку("логин"); //ТекстВыгрузки.ДобавитьСтроку("пароль"); //ТекстВыгрузки.ДобавитьСтроку("cd office"); //ТекстВыгрузки.ДобавитьСтроку("put " + КаталогПользователя() + ИмяПрайса); //ТекстВыгрузки.ДобавитьСтроку("bye"); //ТекстВыгрузки.Записать(КаталогПользователя() + "ftp.txt"); //ТекстВыгрузки = ""; // //КомандаСистемы("ftp -s:" + КаталогПользователя() + "Ftp.txt>> " + (КаталогПользователя() + "report.txt")); //ФС.УдалитьФайл(КаталогПользователя() + "ftp.txt"); // //ТекстВыгрузки = СоздатьОбъект("Текст"); //ТекстВыгрузки.Открыть(КаталогПользователя() + "report.txt"); //КС = ТекстВыгрузки.КоличествоСтрок()-4; //если все нормально - то в этой строке файла должно быть соотв.сообщение // //проверим его //Попытка // строкаКомплете = ТекстВыгрузки.ПолучитьСтроку(КС); // Если Найти(Нрег(строкаКомплете),"226 transfer complete") = 0 // Тогда а=1; а=а/0; // КонецЕсли; // тПротокол = ТекущееВремя()+" файл данных успешно отправлен на сервер интернет-магазина"+РазделительСтрок+тПротокол; // Форма.Обновить(); // ТекстВыгрузки = ""; // ФС.УдалитьФайл(КаталогПользователя() + ИмяПрайса); // ФС.УдалитьФайл(КаталогПользователя() + "report.txt"); //Исключение // тПротокол = ТекущееВремя()+" ПРОИЗОШЛА ОШИБКА ВО ВРЕМЯ ЗАГРУЗКИ СФОРМИРОВАННОГО ФАЙЛА НА СЕРВЕР ИНЕТРНЕТ-МАГАЗИНА"+РазделительСтрок+тПротокол; // тПротокол = ТекущееВремя()+ИмяПрайса+РазделительСтрок+тПротокол; // Форма.Обновить(); // ТекстВыгрузки.Показать(); // ТекстВыгрузки = ""; //КонецПопытки; ////**************************************************************************************************************************** ////БЛОК ВЫГРУЗКИ НА ФТП ******************************************************************************************************* ////**************************************************************************************************************************** |
|||
13
Злопчинский
11.05.12
✎
19:23
|
вместо штатного ftp.exe можно заюзать ncftp
|
|||
14
Юрий Лазаренко
11.05.12
✎
19:26
|
(12) Спасиб, сгодится для будущего, ну или если уже сделанный вариант будет работать нестабильно.
|
|||
15
andrewks
11.05.12
✎
20:11
|
(14) ftp в dialmail.dll довольно стабильно работает, у меня довольно давно используется, и в активном и в пассивном режимах траблов не замечено
|
|||
16
Юрий Лазаренко
11.05.12
✎
22:52
|
(15) Будем тестить. Завтра запуск, автоматически каждые 3 часа будет идти обновление цен на сайте. Через неделю оценим количество сбоев.
|
|||
17
smaharbA
11.05.12
✎
23:17
|
shell.application
|
|||
18
sapphire
11.05.12
✎
23:26
|
(17) тогда уж WSHexec лучше, ИМХО
|
|||
19
smaharbA
11.05.12
✎
23:37
|
(18)
//******************************************* Процедура Сформировать() Перем Папка,Файл; Перем РазмерФайла,АтрибутыФайла,РазмерФайлаВрем; Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; ИмяФайла="1cv7.rar"; РазмерФайлаВрем=-1; РазмерФайлаВрем=0; Имя="Имя"; Пароль="пароль"; УРЛ="домен.ру"; Путь="/нужный/дальнейший/путь"; Схема="ftp://"; Если ПустоеЗначение(Имя)=0 Тогда Схема=Схема+Имя+":"+Пароль+"@"; КонецЕсли; Путь=СтрЗаменить("/"+Путь,"//","/"); ФТП=Схема+УРЛ+Путь; Шел=СоздатьОбъект("Shell.Application"); РазмерФайлаВрем=-1; РазмерФайлаВрем=0; Папка=Шел.Namespace(КаталогПользователя()); Если ФС.СуществуетФайл(Папка.Self.Path+"\"+ИмяФайла)=1 Тогда ФС.УдалитьФайл(Папка.Self.Path+"\"+ИмяФайла); КонецЕсли; ПапкаИсточник=Шел.Namespace(ФТП); Файлы=ПапкаИсточник.Items(); Скрипт.AddObject("Файлы",Файлы); Файлы=Скрипт.Eval("new Enumerator(Файлы)"); Пока Файлы.atEnd(0)=0 Цикл Если ИмяФайла=Файлы.item(0).Name Тогда Файл=Файлы.item(0); Прервать; КонецЕсли; Файлы.moveNext(0); КонецЦикла; Папка.CopyHere(Файл); РазмерФайла=0; Пока Файл.Size<>РазмерФайла Цикл ВвестиСтроку("Копируем файл "+Файл.Path,"Копируем файл "+Файл.Path,100,,1); РазмерФайла=Папка.ParseName(ИмяФайла).Size; КонецЦикла; КонецПроцедуры |
|||
20
Злопчинский
12.05.12
✎
02:12
|
Понятно что здорово, но здорово непонятно! ;-)
(скопипатсил к себе в КЗ) . afftar peshы ischo! |
|||
21
Злопчинский
12.05.12
✎
02:13
|
а почему нет кнопочки "добавить в КЗ"..?
|
|||
22
Злопчинский
12.05.12
✎
02:14
|
а! видимо мну на ноль умножили за неподобающее поведение...
|
|||
23
sapphire
12.05.12
✎
02:14
|
(21) А зачем?!
|
|||
24
sapphire
12.05.12
✎
02:16
|
(19) Раньше на скрипт-кодинг.инфо всё было.
Серому Кардиналу: верни страые статьи, чать не обеднеешь. |
|||
25
Юрий Лазаренко
12.05.12
✎
09:55
|
(19) Впечатлило. Тупой вопрос: а зачем в код два раза вставлена такая конструкция:
РазмерФайлаВрем=-1; РазмерФайлаВрем=0; ??? Одна и та же переменная инициализируется два раза |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |