Работа с ftp протоколом на visual basic


Содержание

Работа с ftp протоколом на visual basic

Перевод статьи Joacim Andersson «Using FTP in VB»(Работа с FTP протоколом на Visual Basic)

В моей последней разработке нужно было использовать функции работы с FTP. Сначала для этой цели я использовал Internet Transfer Controls, но вскоре понял, что этот компонент заточен более на работу с Http. У ITC были проблемы с серверами, на которых было установлено не Микрософтовское ПО (ну, например Apache). Тогда я решил написать собственный FTP компонент в виде класса(совокупности объектов или функций в группе по их свойству и поведению). После часов поиска в MSDN я обнаружил очень интересные функции FtpPutFile, FtpGetFile, FtpCreateDirectory. Работа этих функций становилась возможной при получении данных(хендла) от функции InternetConnect, которая используется для обращения к определенным портам адреса(IP). Но и ей нужна информация от функции InternetOpen. Т.о. для использования каких-либо FTP команд необходимо последовательно вызвать эти функции. При завершении работы нужно вызвать функцию InternetCloseHandle два раза, чтобы закрыть FTP и Internet сессии.

Правильная последовательность функций:

1) Инициализируем работу с интернет функциями через InternetOpen

2) Коннектимся к хосту через InternetConnect

3) Используем FTP команды

4) Закрываем хендлы

Пожалуй, настало время подтвердить теоретическую часть статьи примерами. Для начала самое основное — функция FTPGetFile для получения файла от сервера. Вот так эта функция объявляется:

Как я уже писал, нам понадобятся функции InternetOpen и InternetConnect. Они объявляются так:

Рассмотрим каждый из четырех шагов в отдельности.

Сначала Шаг первый : Подключение к Интернет.

hINetSession = InternetOpen(“MyFTPClient”, 0, vbNullString, vbNullString, 0)

Первый параметр(sAgent) указывает на имя программы, которая вызывает функцию. Видимо, здесь можно писать все, что угодно. Второй параметр(nAccessType) может принимать всего три значения — 0,1 и 3. Он определяет, используем ли мы прокси или нет. При значении равном 1 мы коннектимся напрямую. При 3х мы используем прокси. При этом адрес прокси нужно задать в параметре sProxyName и порт в параметре sProxyBypass. В данном примере для соединения я установил значение 0, при котором функция берет всю информацию из реестра(то есть использует настройки IE). Т.к. мы не определяем прокси-сервер напрямую, то третий и четвертый параметры принимают значение vbNullString. Последний параметр dwFlags определяет работу функции. Ничего нестандартного в этом случае нам не требуется, поэтому просто ставим 0.

Если вызов функции прошел удачно, то переменной hINetSession присвоится ненулевое значение, представляющее собой хендл функции, который мы используем чуть позже.

Шаг второй: производим коннект.

Первый параметр InternetConnect представляет собой хендл, полученный при выполнении InternetOpen. Второй — урл или Ip хоста, к которому мы присоединяемся(при этом ftp:// опускается). Следующим параметром идет порт. Я выставил значение порта равное 21, но если вы поставите 0, то ничего страшного не произойдет. Просто программа будет коннектиться через порт по умолчанию(как раз 21). Далее мы передаем логин и пароль. Будьте осторожны! При дизассмеблировании все ваши пароли могут попасть в руки особо старательных крякеров. Следующим параметром мы определяем тип используемого сервиса. Я использовал зарезервированную константу INTERNET_SERVICE_FTP, которая имеет значение 1. Также могут быть использованы следующие значения:

Сейчас нас интересует только FTP. Если выставить 0, то функция сама определит, что нам требуется. В этом случае в параметре sServerName следует указать полный урл(ftp://ftp.pesh.com)

Параметр dwFlags мы могли установить на &H8000000 (или INTERNET_FLAG_PASSIVE), если бы нам потребовалось работать в FTP в пассивном режиме. Здесь мы просто пишем 0. Последний параметр dwContext определяет необходимость возврата функцией значений. Нам это не нужно, поэтому 0.

Шаг третий: вызов FTP функций(например, FTPGetFile)

Сначала мы объявим эту функцию:

Потом нам остается только вызвать ее:

Первым идет хендл от функции InternetConnect. Далее имя(или полный путь) до файла на удаленном сервере. Третий параметр — путь до места назначения. Параметр №4 fFailExists определяет, как будет вести себя программа, если она обнаружит, что файл с таким именем уже существует. Значение false указывает на то, что такие файлы будут перезаписываться. Атрибуты, присваиваемые локальному файлу, задаются в параметре dwFlagAttributes. Это можно сделать и после. За формат передачи данных отвечает параметр dwFlags: ASCII = 1, Binary = 2. Последний параметр также отвечает за возврат значений.

Пункт четвертый, заключительный: закрываем хендлы


Хендлы закрываются в порядке, противоположном их открытию. Сначала закроем hSession, а потом InetSession. Для этого используем функцию InternetCloseHandle.

Так она вызывается:

Готово! Мы скачали файл. Теперь разберемся с другими функциями.

Для отправки файла на сервер выполняем шаги 1 и 2 и вызываем функцию FTPPutFile, которая выглядит так:

Как видите, очень похоже на FTPGetFile.

Сначала идет хендл от InternetConnect, путь и имя локального и «удаленного» файлов. Параметр dwFlags задает тип передачи ASCII = 1, Binary = 2; последний аргумент опускаем.

Вызов функции может оказаться неуспешным, если у пользователя нет прав закачивать файлы на сервер.

Здесь просто выставляем хендл и имя удаляемого файла. Опять может не сработать при отсутствии прав на удаление.

Снова требуется только хендл и имена файлов(старое и новое)

ПОЛУЧАЕМ СПИСОК ФАЙЛОВ и ДИРЕКТОРИЙ НА СЕРВЕРЕ

Как вы могли заметить, все вышеописанные функции очень просты. Вот пример посложнее. Значения функции могут выводится в Листбокс или его аналог. Нам потребуются две функции FtpFindFirstFile и InternetFindNextFile:

Эти функции возвращают ненулевое значение при обнаружении файла и 0, если произошла ошибка. Для того чтобы определить реальная ли это ошибка или просто больше нет файлов нужно, проверить значение Err.LastDllError. Если оно равно ERROR_NO_MORE_FILES (=18), то все нормально, если нет, то дело наше плохо.

Обе этих функции имеют параметр WIN32_FIND_DATA, который представляет собой тип или структуру, определяемую юзером.

Далее я привожу пример заполнения ListBox файлами и директориями с сервера. Считаем, что вы уже получили FTP хендл c именем hSession.

Как вы видите, описывать FTP функции очень просто. Конечно, есть ещё много разных функций, типа создания директории, но их также легко написать, главное не забывайте закрывать хендлы.

От U1traDIMM: Вообще свою статью автор писал исходя из Winsock API. Если интересно, то я нашел одну из его версий в нете: http://www.medusa.uni-bremen.de/intern/knowhow/winsock/winsock.htm

Written by U1traDIMM. August 2002

Архив метки: FTP

Загрузка папки на FTP (VB .NET)

Как загрузить на FTP папку со всеми файлами и подкаталогами Способ загрузить папку на FTP-сервер как есть мне неизвестен, возможно, его и нет. Рассмотрим два способа. Лично мне более по душе второй, рекурсивный. Решение следующее: сканируем дерево папок исходного … Читать далее →

FTP-клиент для быстрого обмена файлами (исходник)

Описание программы FTP-клиент. В этом исходнике освещаются следующие вопросы: Создание файлов и папок на FTP, удаление файлов Дозапись в файл на сервере Работа с событиями — загрузка файлов, окончание загрузки и т.д. Преобразование имен файлов в пригодные для загрузки (на … Читать далее →

FTP-клиент для быстрого обмена файлами на Visual Basic .NET


Данный FTP-клиент необычный и решает свой круг задач, который, в общем-то, сильно расходится с кругом задач обычных FTP-клиентов. Обычно подразумевается, что такой клиент призван закачивать/скачивать/редактировать файлы на удаленном сервере. Данный софт не для этого. Он написан был для быстрого обмена … Читать далее →

Работа с ftp протоколом на visual basic

Начиная с версии 2007 в Офисе вместо старого меню появилась так называемая «Лента» ( Ribbon ). Следовательно появились и новые команды для управления этими «Лентами».

Подробнее.
Поиск во встроенных и стандартных макросах

Не так давно я размещал код Даниэля Пино о поиске встроенных макросов в формах и отчётах Получить список встроенных макросов

И вот у того же Даниэля Пино натолкнулся на подпрограмму, которая производила поиск по содержимому во встроенных и стандартных макросах. Как пишет сам Даниэль Пино, он её разрабатывал, чтобы определить, откуда вызывались формы, чтобы заменить одни формы на другие.

MS ACCESS — Access-Easy — Решение типовых задач
Автор Daniel Pineault
30.10.2020 г.
Подробнее.
Поиск встроенных макросов

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

MS ACCESS — Access-Easy — Решение типовых задач
Автор Daniel Pineault
15.10.2020 г.
Подробнее.
Запуск макроса во внешней базе данных
MS ACCESS — FAQ по MS ACCESS
Автор Administrator
14.10.2020 г.
Иногда возникает вопрос: «Как я могу запустить/выполнить макрос в другой внешней базе данных?» Вот тут находится ответ на данный вопрос.
Подробнее.
Как определить, является ли текущий пользователь Администратором в системе Windows

Иногда, довольно редко, программа на Access может выполнять действия, которые разрешены только группе Администраторы Windows . Вообще-то это практически и не встречается, т.к. обычно программы на Access никуда и не лезут. Но бывают и особые случаи.

MS ACCESS — FAQ по MS ACCESS
Автор Joss
11.10.2020 г.
Подробнее.
Как загрузить рекордсет в массив

Иногда бывает необходимо загрузить содержимое рекордсета в массив для того, чтобы более эффективно его использовать. Способ, который первым приходит в голову. Создаешь динамический массив (тип Variant, ведь в рекордсете могут быть разных типов). Создаешь рекордсет. Определяешь количество записей в рекордсете. Определяешь размер динамического массива. Делаешь перебор по записям, присваивая элементам массива значение полей рекордсета. После окончания перебора закрываешь и удаляешь рекордсет. Массив для работы готов. Всё просто. Но разработчики библиотек DAO и ADO решили облегчить нашу жизнь. Они добавили в коллекцию рекордсета действие GetRows, которое как раз и обеспечивает запись рекордсета в массив одной строкой, без организации перебора по записям.

MS ACCESS — Access-Easy — Решение типовых задач
Автор Joss
09.10.2020 г.
Подробнее.
Разблокировка проекта VBA Access
MS ACCESS — FAQ по MS ACCESS
Автор Joss
03.10.2020 г.
Закрытие исходного кода VBA паролем — один из способов защиты интеллектуальной собственности разработчика. Однако существуют много платных и бесплатных программ для его взлома. Но вот на сайте DEVelopers HUT я совсем недавно нашел статью Даниэля Пино о том, как можно взломать защиту VBA проекта без всяких взломщиков. Вот она.
Подробнее.
Установка мастера создания инсталяционных пакетов (Package Solution Wizard) для Access 2007 и 2010.

Ещё с Access 2.0 существовало специальное дополнение для разработчиков, которое помогало создавать инсталяционные пакеты для Access, что облегчало установку программ на компьютерах клиентов.

От версии к версии менялись названия и дополнительные функции

Access 2.0 — Microsoft Access Developer’s Toolkit (aka ADT 2.0)
Access 7.0 (95) — Microsoft Access Developer’s Toolkit (aka ADT 7 или 95)
Access 97 — Office Developers Edition 97 aka (ODE 97)
Access 2000 — Microsoft Office Developer Edition for 2000 (aka MOD 2000)
Access 2002 (XP) — Microsoft Office XP Developer (aka MOD XP occasionally aka MOD 2002)
Access 2003 — Microsoft Office Access 2003 Developer Extensions
Access 2007 — Microsoft Office Access 2007 Developer Extensions (Package Solution Wizard) — бесплатный
Access 2010 — Package Solution Wizard — включен в Access как СОМ надстройка

Все они до версии 2007 были платными . И только начиная с 2007 версии это дополнение стало бесплатным, как и Access Runtime , и их стало возможно скачать с сайта Microsoft . До этого для распространения Access Runtime разработчик должен был приобрести специальную лицензию.

MS ACCESS — Аccess-PRO
Автор Joss
02.10.2020 г.
Подробнее.
Особенности функции Mid и инструкции Mid
MS ACCESS — FAQ по MS ACCESS
Автор Joss
01.10.2020 г.
На написание этой статьи меня натолкнул пользователь Панург с сайта SQL.RU.
Подробнее.
Особенности функции Replace

То, о чём скромно умалчивают справочники, а Микрософт сообщает мелким шрифтом в примечании.

Программа на языке Visual Basic по автоматическому скачиванию файлов с FTP

Здесь я хочу представить исходный код программы по автоматическому скачиванию конкретного файла с фтп сервера, с использованием ini файла, который хранит настройки, программа написана в среде программирования Microsoft Visual Basic v 6.0.


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

Прежде чем переходить непосредственно к коду, давайте я сначала объясню саму инструкцию, которую выполняет программа, как Вы знаете ведь код программы это своего рода инструкция компьютеру, что ему нужно делать. Так вот, программа расположенная удаленно запускается по расписанию с помощью планировщика, подключается к FTP серверу, затем скачивает архив.rar, после того как она скачала, она сразу удаляет его с FTP (чтобы каждый день не качать), затем она отправляет на FTP текстовый файл, как бы лог, для того чтобы я знал, кто скачал этот файл, т.к. пользователей, которые подключаются к фтп много. Затем программа запускает батник, который и делает ту или иную задачу с этим файлом (код батника я показывать не буду, так как это и не нужно). Вот и все что делает моя программа, а забыл сказать, что все, что она делает, пользователь компьютера не видит, выполняется она в скрытом режиме, чтобы не отвлекать того оператора кто работает за компьютером, но Вы можете сделать так, чтобы она выполнялась в видимом режиме.

Ну, теперь давайте перейдем непосредственно к коду программы, но для начала создайте ini файл (test.ini), который должен в последствии, располагается в одной папке с программой, он должен быть с таким содержимым:

[General]
servname=IP FTP сервера
usern=логин
pwd=пароль
port=порт
file=D:\путь к файлу\имя того кто скачал.txt
name= имя того кто скачал.txt

Исходный код программы на Visual Basic

Затем открываем саму среду Microsoft Visual Basic v 6.0 и в код вставляем следующие:

Это еще не все, необходимо еще добавить модуль со следующим содержанием:

Теперь примерно объясню, что это значит. Все что идет между Option Explicit и Private Sub Form_Load() это объявление API функций которые мы используем. Затем идет код самой формы, в которой и используются эти API функции. В коде формы мы сначала выделяем память для переменных, потом уже идет непосредственно подключение к фтп, скачивание файла, удаление файла, отправка текстового файла и запуск батника. А код модуля нужен для того, чтобы наша программа могла быть привязана к ini файлу, и считывать из него параметры.

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

Связь с нетом по FTP

Я пишк небольшую прожку. И хочу, что бы прога могла соединяться с не анонимным FTP сервером. Надо что бы программа могла выкачивать и закачивать файлы.

Может это можно как нить через консольные команды. Например, в Linux есть каманда

А под виндой есть подобная? И как получить доступ к консоли, например в Perl для этого есть оператор system(), а в Basic- Shell

Работа с FTP протоколом на Visual Basic

В моей последней разработке нужно было использовать функции работы с FTP. Сначала для этой цели я использовал Internet Transfer Controls, но вскоре понял, что этот компонент заточен более на работу с Http. У ITC были проблемы с серверами, на которых было установлено не Микрософтовское ПО (ну, например Apache). Тогда я решил написать собственный FTP компонент в виде класса (совокупности объектов или функций в группе по их свойству и поведению). После часов поиска в MSDN я обнаружил очень интересные функции FtpPutFile, FtpGetFile, FtpCreateDirectory. Работа этих функций становилась возможной при получении данных (хендла) от функции InternetConnect, которая используется для обращения к определенным портам адреса (IP). Но и ей нужна информация от функции InternetOpen. Таким образом, для использования каких-либо FTP команд необходимо последовательно вызвать эти функции. При завершении работы нужно вызвать функцию InternetCloseHandle два раза, чтобы закрыть FTP и Internet сессии.

Правильная последовательность функций:

1) Инициализируем работу с интернет функциями через InternetOpen
2) Коннектимся к хосту через InternetConnect
3) Используем FTP команды
4) Закрываем хендлы

Пожалуй, настало время подтвердить теоретическую часть статьи примерами. Для начала самое основное — функция FTPGetFile для получения файла от сервера. Вот так эта функция объявляется:

Как я уже писал, нам понадобятся функции InternetOpen и InternetConnect. Они объявляются так:

Рассмотрим каждый из четырех шагов в отдельности.

Сначала Шаг первый: Подключение к Интернет.

Первый параметр (sAgent) указывает на имя программы, которая вызывает функцию. Видимо, здесь можно писать все, что угодно. Второй параметр (nAccessType) может принимать всего три значения — 0,1 и 3. Он определяет, используем ли мы прокси или нет. При значении равном 1 мы коннектимся напрямую. При 3-х мы используем прокси. При этом адрес прокси нужно задать в параметре sProxyName и порт в параметре sProxyBypass. В данном примере для соединения я установил значение 0, при котором функция берет всю информацию из реестра (то есть использует настройки IE). Т.к. мы не определяем прокси-сервер напрямую, то третий и четвертый параметры принимают значение vbNullString. Последний параметр dwFlags определяет работу функции. Ничего нестандартного в этом случае нам не требуется, поэтому просто ставим 0.
Если вызов функции прошел удачно, то переменной hINetSession присвоится ненулевое значение, представляющее собой хендл функции, который мы используем чуть позже.

Шаг второй: производим коннект.


Первый параметр InternetConnect представляет собой хендл, полученный при выполнении InternetOpen. Второй — урл или Ip хоста, к которому мы присоединяемся (при этом ftp:// опускается). Следующим параметром идет порт. Я выставил значение порта равное 21, но если вы поставите 0, то ничего страшного не произойдет. Просто программа будет коннектиться через порт по умолчанию (как раз 21). Далее мы передаем логин и пароль. Будьте осторожны! При дизассмеблировании все ваши пароли могут попасть в руки особо старательных крякеров. Следующим параметром мы определяем тип используемого сервиса. Я использовал зарезервированную константу INTERNET_SERVICE_FTP, которая имеет значение 1. Также могут быть использованы следующие значения:

Сейчас нас интересует только FTP. Если выставить 0, то функция сама определит, что нам требуется. В этом случае в параметре sServerName следует указать полный урл (ftp://ftp.pesh.com)

Параметр dwFlags мы могли установить на &H8000000 (или INTERNET_FLAG_PASSIVE), если бы нам потребовалось работать в FTP в пассивном режиме. Здесь мы просто пишем 0. Последний параметр dwContext определяет необходимость возврата функцией значений. Нам это не нужно, поэтому 0.

Шаг третий: вызов FTP функций (например, FTPGetFile)

Сначала мы объявим эту функцию:

Первым идет хендл от функции InternetConnect. Далее имя (или полный путь) до файла на удаленном сервере. Третий параметр — путь до места назначения. Параметр №4 fFailExists определяет, как будет вести себя программа, если она обнаружит, что файл с таким именем уже существует. Значение false указывает на то, что такие файлы будут перезаписываться. Атрибуты, присваиваемые локальному файлу, задаются в параметре dwFlagAttributes. Это можно сделать и после. За формат передачи данных отвечает параметр dwFlags: ASCII = 1, Binary = 2. Последний параметр также отвечает за возврат значений.

Пункт четвертый, заключительный: закрываем хендлы

Хендлы закрываются в порядке, противоположном их открытию. Сначала закроем hSession, а потом InetSession. Для этого используем функцию InternetCloseHandle.

Так она вызывается:

Готово! Мы скачали файл. Теперь разберемся с другими функциями.

Для отправки файла на сервер выполняем шаги 1 и 2 и вызываем функцию FTPPutFile, которая выглядит так:

Как видите, очень похоже на FTPGetFile.

Сначала идет хендл от InternetConnect, путь и имя локального и «удаленного» файлов. Параметр dwFlags задает тип передачи ASCII = 1, Binary = 2; последний аргумент опускаем.

Вызов функции может оказаться неуспешным, если у пользователя нет прав закачивать файлы на сервер.

Здесь просто выставляем хендл и имя удаляемого файла. Опять может не сработать при отсутствии прав на удаление.

Снова требуется только хендл и имена файлов(старое и новое)

ПОЛУЧАЕМ СПИСОК ФАЙЛОВ и ДИРЕКТОРИЙ НА СЕРВЕРЕ

Как вы могли заметить, все вышеописанные функции очень просты. Вот пример посложнее. Значения функции могут выводится в Листбокс или его аналог. Нам потребуются две функции FtpFindFirstFile и InternetFindNextFile:

Эти функции возвращают ненулевое значение при обнаружении файла и 0, если произошла ошибка. Для того чтобы определить реальная ли это ошибка или просто больше нет файлов нужно, проверить значение Err.LastDllError. Если оно равно ERROR_NO_MORE_FILES (=18), то все нормально, если нет, то дело наше плохо.
Обе этих функции имеют параметр WIN32_FIND_DATA, который представляет собой тип или структуру, определяемую юзером.

Далее я привожу пример заполнения ListBox файлами и директориями с сервера. Считаем, что вы уже получили FTP хендл c именем hSession.

Как вы видите, описывать FTP функции очень просто. Конечно, есть ещё много разных функций, типа создания директории, но их также легко написать, главное не забывайте закрывать хендлы.

Развертывание сайта с помощью FTP-клиента (VB) Deploying Your Site Using an FTP Client (VB)

Самый простой способ развернуть приложение ASP.NET является вручную скопировать необходимые файлы из среды разработки в рабочую среду. The simplest way to deploy an ASP.NET application is to manually copy the necessary files from the development environment to the production environment. Этом руководстве показано, как использовать FTP-клиента для получения файлов с рабочего стола на поставщике веб-узла. This tutorial shows how to use an FTP client to get the files from your desktop to the web host provider.

Вступление Introduction


Предыдущем учебном курсе представлены простой книги проверки веб-приложение ASP.NET, состоящее из нескольких страниц ASP.NET, главной страницы, пользовательского базового Page класса, число образов, и таблицы стилей CSS три. The previous tutorial introduced a simple Book Review ASP.NET web application, which is comprised of a handful of ASP.NET pages, a master page, a custom base Page class, a number of images, and three CSS style sheets. Теперь мы готовы развернуть это приложение поставщике веб-размещения, после чего приложение будет доступна любому пользователю с подключением к Интернету! We are now ready to deploy this application to a web host provider, at which point the application will be accessible to anyone with a connection to the Internet!

В ходе наших обсуждений в определить, какие файлы должны быть развернуты учебника, мы знаем, что файлы необходимо скопировать на поставщике веб-узла. From our discussions in the Determining What Files Need to Be Deployed tutorial, we know what files need to be copied to the web host provider. (Помните, что какие-либо файлы копируются зависит от приложения явным образом или автоматически скомпилирован ли). Но, как получить файлы из среды разработки (настольных систем) до рабочей среде (веб-сервер, управляемый поставщиком веб-узла)? (Recall that what files are copied depends on whether your application is explicitly or automatically compiled.) But how do we get the files from the development environment (our desktop) up to the production environment (the web server managed by the web host provider)? F ile T на перемещение P сокращение от протокол (FTP) — это протокол, часто используемых для копирования файлов с одного компьютера на другой по сети. The F ile T ransfer P rotocol (FTP) is a commonly used protocol for copying files from one machine to another over a network. Другой вариант — серверных расширений FrontPage (FPSE). Another option is FrontPage Server Extensions (FPSE). Это руководство посвящено с помощью автономного клиентское программное обеспечение FTP для развертывания необходимые файлы из среды разработки в рабочую среду. This tutorial focuses on using stand-alone FTP client software to deploy the necessary files from the development environment to the production environment.

Visual Studio включает инструменты для публикации веб-сайтов по FTP; Эти средства, а также рассмотрим инструменты, использующие FPSE, рассматриваются в следующем учебном курсе. Visual Studio includes tools for publishing websites via FTP; these tools, as well as a look at tools that use FPSE, are covered in the next tutorial.

Чтобы скопировать файлы с помощью FTP, нам нужно FTP-клиент в среде разработки. To copy the files using FTP we need an FTP client on the development environment. FTP-клиент является приложением, предназначенный для копирования файлов с компьютера, он устанавливается на компьютер, на котором выполняется FTP-сервера. An FTP client is an application that is designed to copy files from the computer it’s installed to a computer that is running an FTP server. (Если в поставщике веб-размещения поддерживает передачу файлов по протоколу FTP, как и большинство, то нет FTP-сервера на своих веб-серверов.) Существует ряд клиентских приложений FTP. (If your web host provider supports file transfers via FTP, as most do, then there is an FTP server running on their web servers.) There are a number of FTP client applications available. Можно даже double FTP-клиента веб-браузере. Your web browser can even double as an FTP client. Мои FTP-клиента, а также того, я буду использовать для этого руководства — FileZilla, бесплатно, открытый FTP-клиент, доступный для Windows, Linux и компьютерах Mac. My favorite FTP client, and the one I will be using for this tutorial, is FileZilla, a free, open-source FTP client that is available for Windows, Linux, and Macs. Любой FTP-клиент будет работать, но так можно использовать любой клиент, вы являетесь наиболее удобен. Any FTP client will work, though, so feel free to use whatever client you are most comfortable with.

Если вы следуете вдоль вы должны создать учетную запись с поставщике веб-размещения, прежде чем можно завершит учебником или последующие условия. If you are following along you will need to create an account with a web host provider before you can complete this tutorial or subsequent ones. Как отмечалось в предыдущем учебном курсе, имеются того веб узла поставщика компаний, с помощью широкого спектра цены, функции и качество обслуживания. As noted in the previous tutorial, there are a gaggle of web host provider companies with a wide spectrum of prices, features, and quality of service. Для этого цикла руководств я буду использовать скидки ASP.NET как Мой веб-узел поставщика, но вы можно изучить любые поставщике веб-размещения до тех пор, пока они поддерживают версию ASP.NET, веб-узла был разработан в. For this tutorial series I will be using Discount ASP.NET as my web host provider, but you can follow along with any web host provider as long as they support the ASP.NET version your site is developed in. (Эти руководства были созданы с помощью ASP.NET 3.5.) Кроме того так как мы будут копироваться файлы на поставщике веб-узла с помощью протокола FTP в этом руководстве и, в будущем, те, которые крайне важно что на поставщике веб-размещения поддерживает доступ к их веб-серверов. (These tutorials were created using ASP.NET 3.5.) Also, because we will be copying the files to the web host provider using FTP in this tutorial and in future ones it is imperative that your web host provider supports FTP access to their web servers. Практически все веб-узла поставщиками возможности, но следует повторно проверить перед регистрацией. Virtually all web host providers offer this feature, but you should double-check before signing up.

Развертывание проекта книги проверки веб-приложения Deploying the Book Review Web Application Project

Помните, что существует две версии веб-приложения рецензия на книгу: один реализовано с помощью модели проекта веб-приложения (BookReviewsWAP), а другой с помощью модели проекта веб-сайта (BookReviewsWSP). Recall that there are two versions of the Book Review web application: one implemented using the Web Application Project model (BookReviewsWAP) and the other using the Web Site Project model (BookReviewsWSP). Тип проекта влияет ли компиляции сайта автоматически или явно, и эту модель компиляции определяет, какие файлы должны быть развернуты. The project type influences whether the site is compiled automatically or explicitly, and that compilation model dictates what files need to be deployed. Следовательно мы рассмотрим развертывание BookReviewsWAP и BookReviewsWSP проекты по отдельности, начиная с BookReviewsWAP. Consequently, we will examine deploying the BookReviewsWAP and BookReviewsWSP projects separately, starting with the BookReviewsWAP. Отвлекитесь и загружать эти два приложения ASP.NET в том случае, если вы еще не сделали. Take a moment to download these two ASP.NET applications if you have not done so already.

Запустить проект BookReviewsWAP, перейдя по BookReviewsWAP папку и дважды щелкнув BookReviewsWAP.sln файл. Launch the BookReviewsWAP project by navigating to the BookReviewsWAP folder and double-clicking the BookReviewsWAP.sln file. Перед развертыванием проекта очень важно для построения его, чтобы убедиться, что все изменения к исходному коду, включаются в скомпилированную сборку. Before deploying the project it is important to build it to ensure that any changes to the source code are included in the compiled assembly. Чтобы выполнить сборку проекта перейдите к меню «сборка» и выберите пункт меню BookReviewsWAP сборки. To build the project go to the Build menu and choose the Build BookReviewsWAP menu option. Это компилирует исходный код в проекте в одну сборку, BookReviewsWAP.dll , который размещается в Bin папку. This compiles the source code in the project into a single assembly, BookReviewsWAP.dll , which is placed in the Bin folder.

Теперь мы готовы к развертыванию необходимых файлов! We are now ready to deploy the necessary files! Запуск FTP-клиент и подключитесь к веб-сервера в поставщике вашего веб-размещения. Launch your FTP client and connect to the web server at your web host provider. (При регистрации с веб-хостинга компанию, они будут вам по электронной почте сведения о том, как подключиться к FTP-сервера; это включает адрес, для FTP-сервера, а также имя пользователя и пароль). (When you sign up with a web hosting company they will email you information on how to connect to the FTP server; this includes the address for the FTP server as well as a username and password.)

Скопируйте следующие файлы с рабочего стола к корневой папке веб-сайта в поставщике вашего веб-размещения. Copy the following files from your desktop to the root website folder at your web host provider. При FTP в веб-сервер на веб-размещении поставщика вы, скорее всего, в корневом каталоге веб-сайта. When you FTP into the web server at the web host provider you are likely at the root website directory. Тем не менее, некоторые поставщики веб узла имеют вложенную папку с именем www или wwwroot , служит в качестве корневой папки для файлов веб-сайта. However, some web host providers have a subfolder named www or wwwroot that serves as the root folder for your website files. И, наконец, когда FTPing файлы может потребоваться создать соответствующую структуру папок в рабочей среде — Bin папке Fiction папке Images папки и т. д. Finally, when FTPing the files you may need to create the corresponding folder structure on the production environment — the Bin folder, the Fiction folder, the Images folder, and so on.

/Web.sitemap

  • Полное содержимое Styles папки The complete contents of the Styles folder
  • Полное содержимое Images папки (и ее подпапке BookCovers ) The complete contents of the Images folder (and its subfolder, BookCovers )

    Рис. 1 показана FileZilla, скопировав необходимые файлы. Figure 1 shows FileZilla after the necessary files have been copied. FileZilla отображает файлы на локальном компьютере в левой части и файлы на удаленном компьютере в правой части. FileZilla displays the files on the local computer on the left and the files on the remote computer on the right. Как на рис. 1 показано, файлы исходного кода ASP.NET, такие как About.aspx.vb , находятся на локальном компьютере (среда разработки), но не были скопированы на поставщике веб-узла (рабочей среде), так как файлы кода не обязательно должны быть развернуты при использовании явную компиляцию. As Figure 1 shows, the ASP.NET source code files, such as About.aspx.vb , are on the local computer (the development environment) but were not copied to the web host provider (the production environment) because code files do not need to be deployed when using explicit compilation.

    Нет никакого вреда от необходимости файлы исходного кода на рабочем сервере, так как они учитываются. There is no harm in having the source code files on the production server, as they are ignored. По умолчанию ASP.NET запрещает HTTP-запросы для файлов исходного кода, таким образом, даже если файлы исходного кода присутствуют на рабочем сервере они недоступны для посетителей веб-сайта. ASP.NET forbids HTTP requests to source code files by default so that even if the source code files are present on the production server they are inaccessible to visitors to your website. (То есть, в том случае, если пользователь пытается посетить http://www.yoursite.com/Default.aspx.vb они получат страницу ошибки, которая объясняет, что эти типы файлов — .vb файлы — запрещены.) (That is, if a user tries to visit http://www.yoursite.com/Default.aspx.vb they will get an error page that explains that these types of files — .vb files — are forbidden.)

    Рис. 1: Использовать FTP-клиента, чтобы скопировать необходимые файлы из рабочего стола на веб-сервер на поставщике веб-размещения (Просмотр полноразмерного изображения) Figure 1: Use an FTP Client to Copy the Necessary Files from Your Desktop to the Web Server at the Web Host Provider (Click to view full-size image)

    После развертывания веб-узла Отвлекитесь и тестирование сайта. After deploying your site take a moment to test the site. Если вы приобрели доменное имя и параметры DNS настроены правильно, можно посетить веб-узла, введя имя домена. If you have purchased a domain name and configured the DNS settings properly, you can visit your site by entering your domain name. В качестве альтернативы на поставщике веб-размещения должен предоставил URL-адрес сайта, который будет выглядеть примерно так accountname. webhostprovider.com или webhostprovider.com /accountname. Alternatively, your web host provider should have supplied you with a URL to your site, which will look something like accountname.webhostprovider.com or webhostprovider.com/accountname. Приведен пример URL-адрес для моей учетной записи на ASP.NET, скидка: http://httpruntime.web703.discountasp.net . For example, the URL for my account on Discount ASP.NET is: http://httpruntime.web703.discountasp.net .

    Рис. 2 показан рецензий развернутого веб-сайта. Figure 2 shows the deployed Book Reviews site. Обратите внимание на то, что я просматриваю его на скидках ASP. Серверы NET на http://httpruntime.web703.discountasp.net . Note that I am viewing it on Discount ASP.NET’s servers, at http://httpruntime.web703.discountasp.net . На данный момент времени любой пользователь с подключением к Интернету может просмотреть мой веб-сайт! At this point in time anyone with a connection to the Internet could view my website! Как мы хотели, сайт выглядит и ведет себя так же, как при тестировании в среде разработки. As we’d expect, the site looks and behaves just as it did when testing it in the development environment.

    Если отобразится сообщение об ошибке при просмотре приложения Отвлекитесь и убедитесь, что вы развернули правильного набора файлов. If you get an error when viewing your application take a moment to ensure that you deployed the correct set of files. Затем проверьте сообщение об ошибке, см. в разделе, если оно показывает все сразу же увидеть проблемы. Next, check the error message to see if it reveals any clues as to the problem. После этого можно включать службу технической поддержки компании веб узла или отправьте свой вопрос на соответствующий форум по адресу форумы ASP.NET. Following that, you can turn to your web host company’s helpdesk or post your question to the appropriate forum at the ASP.NET Forums.

    Рис. 2: Узел проверки книги теперь доступен всем с подключением к Интернету (Просмотр полноразмерного изображения) Figure 2: The Book Reviews Site is Now Accessible to Anyone with an Internet Connection (Click to view full-size image)

    Развертывание проекта веб-сайта просмотрите книги Deploying the Book Review Web Site Project

    При развертывании приложения ASP.NET, использующего автоматическую компиляцию, например проект веб-сайта BookReviewsWSP, нет никакой скомпилированной сборки, в Bin папку. When deploying an ASP.NET application that uses automatic compilation, such as the BookReviewsWSP Web Site Project, there is no compiled assembly in the Bin folder. Таким образом файлы исходного кода веб-приложения должны быть развернуты в рабочей среде. As a result, the web application’s source code files must be deployed to the production environment. Давайте подробно рассмотрим этот процесс. Let’s walk through this process.

    Как с помощью проекта веб-приложения имеет смысл первая сборка приложения перед его развертыванием. As with the Web Application Project it’s wise to first Build the application before deploying it. Во время построения проекта веб-сайта не приводит к созданию сборки, он Проверьте наличие ошибок компиляции страницы. While building a Web Site Project does not create an assembly, it does check for any compile-time errors in the page. Лучше найти эти ошибки, вместо необходимости посетителям сайта обнаруживать их для вас! Better to find these errors now rather than having a visitor to your site discover them for you!


    После успешного создания проекта, скопируйте следующие файлы в корневую папку веб-сайта, в поставщике вашего веб-размещения с помощью клиента FTP. Once you’ve successfully built the project, use your FTP client to copy the following files to the root website folder at your web host provider. Может потребоваться создать соответствующую структуру папок в рабочей среде. You may need to create the corresponding folder structure on the production environment.

    Если вы уже развернули BookReviewsWAP, но по-прежнему хотите попробуйте выполнить развертывание проекта BookReviewsWSP проект, сначала удалите все файлы на веб-сервере, которые были переданы при развертывании BookReviewsWAP, а затем развернуть файлы для BookReviewsWSP. If you already deployed the BookReviewsWAP project but still want to try deploying the BookReviewsWSP project, first delete all of the files on the web server that were uploaded when deploying BookReviewsWAP and then deploy the files for BookReviewsWSP.

    /Web.sitemap

  • Полное содержимое Styles папки The complete contents of the Styles folder
  • Полное содержимое Images папки (и ее подпапке BookCovers ) The complete contents of the Images folder (and its subfolder, BookCovers )

    Рис. 3 показано FileZilla, скопировав необходимые файлы. Figure 3 shows FileZilla after copying up the necessary files. Как вы видите, ASP.NET файлов исходного кода, такие как About.aspx.vb , присутствуют на локальном компьютере (среда разработки) и поставщике веб-размещения (рабочей среде), так как файлы кода должны быть развернуты при использовании автоматического компиляция. As you can see, the ASP.NET source code files, such as About.aspx.vb , are present on both the local computer (the development environment) and the web host provider (the production environment) because code files need to be deployed when using automatic compilation.

    Рис. 3: Использовать FTP-клиента, чтобы скопировать необходимые файлы из рабочего стола на веб-сервер на поставщике веб-размещения (Просмотр полноразмерного изображения) Figure 3: Use an FTP Client to Copy the Necessary Files from Your Desktop to the Web Server at the Web Host Provider (Click to view full-size image)

    Взаимодействие с пользователем не зависит от модели компиляции приложения. The user experience is not affected by the application’s compilation model. Доступны те же страницы ASP.NET, и они выглядят и ведут себя одинаково ли веб-сайт был создан с помощью модели проекта веб-приложения или модели проекта веб-сайта. The same ASP.NET pages are accessible and they look and behave the same whether the website was created using the Web Application Project model or the Web Site Project model.

    Обновление веб-приложения в рабочей среде Updating a Web Application on Production

    Разработка веб-приложений и развертывания не однократный процесс. Web application development and deployment are not a one-time process. Например при создании веб-сайта рецензия на книгу я построения различных страницах и написали код сопровождающий ее код на моем компьютере personal (среда разработки). For example, when creating the Book Review website I built the various pages and wrote the accompanying code on my personal computer (the development environment). После достижения некоторых стабильного состояния, я развернутый Мое приложение так другими пользователями может на узле и чтение Мои отзывы. After reaching a certain stable state, I deployed my application so that others could visit the site and read my reviews. Но развертывания не отметил его в конец свои разработки на этом сайте. But deployment does not mark the end of my development on this site. Может добавить дополнительные рецензий или реализовывать новые функции, например посетителями моей книги скорость или оставить свои комментарии. I may add more book reviews or implement new features, such as allowing my visitors to rate books or leave their own comments. Подобные усовершенствования будут разрабатываться в среде разработки и необходимо развернуть после завершения. Such enhancements would be developed on the development environment and, when completed, would need to be deployed. Разработка и развертывание, таким образом, являются cyclical. Development and deployment, therefore, are cyclical. Разрабатывайте приложения и затем развернуть его. You develop an application and then deploy it. Хотя веб-сайт работает и в рабочей среде, добавлены новые функции и исправления ошибок со временем, что требует повторного развертывания приложения. While the site is live and in production, new features are added and bugs are fixed over time, which necessitates re-deploying the application. И так далее и т. д. And so on and so on.

    Как можно догадаться, при повторном развертывании веб-приложение, требуется только для копирования новых и измененных файлов. As you might expect, when re-deploying a web application you only need to copy new and changed files. Нет необходимости заново развертывать неизмененных страниц или стороне сервера или клиента поддерживает файлы (несмотря на то, что нет никакого вреда от таким образом). There’s no need to re-deploy unchanged pages or server- or client-side support files (although there’s no harm in doing so).

    Следует помнить при использовании явную компиляцию, что каждый раз, когда вы добавьте в проект новую страницу ASP.NET или изменять какие-либо связанные с кодом, вам нужно перестроить проект, который обновляет сборку в Bin папку. One thing to keep in mind when using explicit compilation is that anytime you add a new ASP.NET page to the project or make any code-related changes, you need to rebuild your project, which updates the assembly in the Bin folder. Следовательно необходимо скопировать эту обновленную сборку в рабочей среде, при обновлении веб-приложения в рабочей среде (а также другие новые и обновленные содержимое). Consequently, you’ll need to copy this updated assembly to production when updating a web application on production (along with the other new and updated content).

    Также понимать, что любые изменения Web.config или файлов в Bin directory остановки и перезапуска пула приложений веб сайта. Also understand that any changes to the Web.config or the files in the Bin directory stops and restarts the website’s Application Pool. Если состояние сеанса хранится с использованием InProc режиме (по умолчанию), а затем посетителей веб сайта будет теряют свое состояние сеанса, каждый раз, когда изменяются эти файлы ключей. If your session state is stored using the InProc mode (the default) then your site’s visitors will lose their session state whenever these key files are modified. Чтобы избежать этого неудобства, рассмотрите возможность хранения сеанса с помощью StateServer или SQLServer режимы. To avoid this pitfall, consider storing session using the StateServer or SQLServer modes. Дополнительные сведения по этой теме режимы состояния сеанса. For more information on this topic read Session-State Modes.

    И, наконец Имейте в виду, что повторного развертывания приложения может занять от нескольких секунд до нескольких минут, в зависимости от числа и размера файлов, которые должны быть скопированы в рабочую среду. Finally, keep in mind that re-deploying an application can take anywhere from a few seconds to several minutes, depending on the number and size of files that need to be copied to the production environment. В течение этого времени пользователи, посещающие могут возникать ошибки или аномалии поведения. During this time users visiting your site may experience errors or odd behavior. Можно «отключить» всего приложения, добавив на страницу с именем App_Offline.htm корневой каталог приложения, объясняющий пользователям что сайт не работает для обслуживания (или все) и будет быть резервного копирования чуть ниже. You can «turn off» your entire application by adding a page named App_Offline.htm to your application’s root directory that explains to your users that the site is down for maintenance (or whatever) and will be back up shortly. Когда App_Offline.htm файл присутствует, среда выполнения ASP.NET все входящие запросы вы будете перенаправлены на эту страницу. When the App_Offline.htm file is present, the ASP.NET runtime redirects all incoming requests to that page.

    Сводка Summary

    Развертывание веб-приложения влечет за собой, скопировать необходимые файлы из среды разработки в рабочую среду. Deploying a web application entails copying the necessary files from the development environment to the production environment. Наиболее распространенные средства, по которому файлы передаются по сети — протокол передачи файлов (FTP) и большинство поставщиков веб-узел поддержки доступа к FTP для своих веб-серверов. The most common means by which files are transferred over a network is the File Transfer Protocol (FTP), and most web host providers support FTP access to their web servers. В этом руководстве мы узнали, как использовать FTP-клиент для развертывания необходимых файлов на веб-сервер. In this tutorial we saw how to use an FTP client to deploy the needed files to the web server. После развертывания веб-сайта могут быть посетители с подключением к Интернету! Once deployed, the website can be visited by anyone with a connection to the Internet!

    Счастливого вам программирования! Happy Programming!

    Дополнительные сведения Further Reading

    Дополнительные сведения по темам, обсуждавшимся в этом руководстве см. в следующих ресурсах: For more information on the topics discussed in this tutorial, refer to the following resources:

    Работа с ftp протоколом на visual basic

    Представляю вашему вниманию инструментарий для работы с файлами по FTP, не требующий использования системных функций (WinAPI)

    Как известно, отправить файл на FTP сервер (или загрузить файл с FTP, создать папку на FTP сервере, и т.д.) можно при помощи таких API-функций из библиотеки wininet.dll , как FtpPutFile, FtpGetFile, FtpRenameFile, FtpDeleteFile, FtpRemoveDirectory, FtpCreateDirectory, FtpFindFirstFile и т.д.

    Как именно использовать эти функции — можете посмотреть в коде надстройки для отправки файлов Excel на FTP сервер


    В чем недостаток этого способа — так это в необходимости обеспечения совместимости кода с различными платформами .
    В частности, чтобы код с функциями API работал и в Office 2010 , и в 64-битной Windows , необходимо заметно увеличить объём кода . А, поскольку описание этих функций из wininet.dll и без того занимает много места (а универсальный код вообще займёт сотню строк), да и надо ещё и разбираться во всех этих функциях, т.к. в разных версиях Windows возможны различия в способе вызова функций из wininet.dll, и были созданы аналоги этих функций для работы с FTP, не использующие WinAPI

    Сподвигла меня на это решение необходимость реализации средств обновления надстроек Excel , где необходимо было реализовать функционал отправки файлов Excel на FTP сервер, причем так, чтобы это стабильно работало на всех компьютерах. Попутно, кстати, родилась и функция загрузки файла с сервера без использования WinAPI , которая тоже вошла в состав данного инструментария.

    Основу предлагаемого мной решения составляет модуль класса FTPcommander , который предоставляет вам следующие функции:

    • Function DownloadFile(ByVal FtpFolder$, ByVal FtpFilename$, ByVal LocalPath$) As Boolean
      (Функция скачивает файл с FTP-сервера с именем FtpFilename$ из папки FtpFolder$. Скачанный файл сохраняется на компьютере под именем (и по пути) LocalPath$. Функция возвращает TRUE, если загрузка файла завершилась успешно)
    • Function UploadFile(ByVal LocalPath$, Optional ByVal FtpFolder$, Optional ByVal FtpFilename$ = «») As String
      (Функция загружает файл LocalPath$ по FTP на сервер в папку FtpFolder$. Если задан параметр FtpFilename$, отправленный файл получает имя FtpFilename$. Функция возвращает ссылку на файл, если закачка файла завершилась успешно)
    • Function CreateNewFolder(ByVal FtpFolder$) As Boolean
      (Функция создаёт папку FtpFolder$ на FTP сервере. Возвращает TRUE, если папка была успешно создана, или существовала ранее)
    • Function DeleteFile(ByVal FtpFolder$, ByVal FtpFilename$) As Boolean
      (Функция создаёт папку FtpFolder$ на FTP сервере. Возвращает TRUE, если папка была успешно создана, или существовала ранее)
    • Function DownloadFileFromURL(ByVal URL$, ByVal LocalPath$) As Boolean
      (Функция скачивает файл по ссылке URL$, и сохраняет его по пути LocalPath$. Возвращает TRUE, если файл был успешно загружен)
    • Функция GetLastError возвращает информацию об ошибке, если некая функция была завершена некорректно (возвратила FALSE)

    Как использовать модуль класса FTPcommander для работы с файлами по FTP:

    1) Откройте прикреплённый к статье файл Excel, и мышом перетащите модуль класса FTPcommander в свой файл

    2) Пропишите настройки FTP аккаунта в специальной функции, или сохраните их в реестре Windows
    (подробнее об этом — ниже)

    3) В своём макросе создаёте экземпляр класса FTPcommander , и используете его методы для работы с файлами
    Создать экземпляр класса вам поможет следующий код: Dim FTP As New FTPcommander
    Примеры макросов отправки и скачивания файлов доступны в прикреплённом файле (в модуле mod_TestFTP):

    Вот один из примеров использования класса FTPcommander:

    Как видите, всего 2 строки кода, — и ваш файл оказался загружен на FTP сервер.

    Ещё один пример использования:

    Есть 2 способа задать настройки FTP аккаунта для использования объектом FTPcommander:

    1 способ — один раз запустить макрос следующего вида:

    Этот макрос запишет все необходимые настройки в реестр Windows, и впоследствии будет брать их оттуда

    Преимущество этого способа: один раз запустили макрос, потом удалили его, — и можно нигде в коде не прописывать секретные данные FTP аккаунта

    Недостаток этого способа: при хранении настроек в реестре, возможен доступ только к одному FTP серверу

    2 способ — для инициализации объекта FTPcommander использовать специальные функции с настройками:

    Пример использования функции:

    Преимущества этого способа: возможно работать с несколькими FTP серверами одновременно, конфиденциальные данные (настройки FTP аккаунта) не хранятся в открытом виде в реестре

    Недостаток этого способа: настройки FTP аккаунта хранятся в коде VBA — если файл попадёт постороннему человеку, он легко сможет добраться до этих настроек (как известно, любые пароли на VBA ломаются за секунду)

    Команды для загрузки локального файла на ftp с помощью vba [duplicate]

    Необходимо загрузить файл (file.txt) на сервер (ftp.server.com) из Excel VBA. (не обязательно обязательно FTP, просто нужно иметь возможность поместить файл туда и вернуть его, и у меня есть сервер на общем хостинге GoDaddy)

    То, что я пробовал, было запустить этот script:


    Ошибка, которую я получаю:

    425 Не удалось открыть подключение к порту 53637: время ожидания подключения

    Google говорит мне, что мне нужно перейти в пассивный режим, но клиент командной строки ftp.exe этого не позволяет.

    Любой знать какой-либо бесплатный (открытый исходный код) FTP-клиент командной строки, который разрешает пассивный режим?

    У меня есть более простая альтернатива FTP?

    Есть ли лучший способ загрузить файл через VBA (без обхода командной строки)?

    Я думаю об использовании DROPBOX (но я действительно не хочу устанавливать эту программу на все рабочие станции, которые будут нуждаться в программе).

    Автоматизация переноса статей из Microsoft Word в Geektimes

    Мне нравится писать на Geektimes, но есть одно неудобство. Это необходимость использования нестандартной разметки в стиле хабрахабр и ручной перенос картинок на habrastorage.org. Я пишу статьи в MS Word под Windows. Честно потратил около часа чтобы найти готовые решения данной проблемы. Лучшее из найденного был анализ API habrastorage для автоматизации загрузки картинок, но похоже устаревшее. Было упоминание некоего конвертера, но с неработающей ссылкой.

    Суть предлагаемой автоматизации в том, чтобы одним нажатием кнопки в Word получить текст готовый к копированию в окно редактора Geektimes. А после копирования чтобы там же автоматически появились картинки.

    Технология очень простая. MS Word, как известно, может содержать встроенный программный код на языке Visual Basic. Это специальное наречие Visual Basic называемое VBA (Visual Basic for Applications). На VBA можно писать достаточно сложные сценарии по преобразованию документов в Word-е. Процедуры, написанные на VBA, называют макросами. Макросы в Word можно вызывать явно из специального меню, а можно назначить вызов их исполнения определенной кнопке на инструментальной панели.
    Картинки же Geektimes сам перекачает к себе. Чтобы ему было откуда перекачивать надо картинки где-то разместить в интернете. Чтобы не занимать свое время освоением и анализом различных API для бесплатных хостингов картинок вроде photos.google.com я решил обратится к старому доброму FTP. Мы приобретаем или каким-либо образом получаем услугу хостинга сайта с закачкой контента по FTP. Сам MS Word VBA не имеет средств работы по протоколу FTP, но он отлично взаимодействует с COM объектами (т.е. специальными dll файлами ). Для работы по FTP был использован COM модуль из проекта WinSCP.
    Написанный мной VBA макрос сначала заменяет заданные стили документа Word на разметку хабрахабр, потом конвертирует документ Word в документ HTML. Само HTML представление нам не нужно. В результате конвертирования Word создает поддиректорию со всеми картинками из документа в формате .png. Картинки оптом переносятся на заданный FTP сервер. После этого макрос удаляет картинки в документе и подставляет на их место ссылки на сайт куда только что были загружены эти картинки. Остается в окне документа Word выделить весь текст и скопировать его в окно редактора в Geektimes. Нажать кнопку в Geektimes чтобы сохранить в черновик. Потом снова нажать на редактирование и убедится, что Geektimes уже перекачал картинки и заменил их на ссылки на habrastorage. Дело сделано.

    Установка WinSCP

    Скачиваем файл .NET assembly / COM library и распаковываем в доступную директорию.
    В этой директории запускаем командную строку: %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe WinSCPnet.dll /codebase /tlb:WinSCPnet64.tlb
    Все.

    Как создать статью по этой технологии.

    Чтобы упростить дело, был создан файл шаблона Статья_GT.dotm, содержащий необходимый макрос VBA и указатель на подключение к объекту WinSCP.
    Чтобы посмотреть макрос и проверить работоспособность подключения объекта WinSCP надо после открытия файла шаблона нажать на панели инструментов Word эту кнопку

    и в ней выбрать View Macros, потом Edit. Должно появится окно такого вида:

    В этом окне в меню Tools->References открывается такой диалог. В нем должна быть отмечена строчка с WinSCP.

    Если открыть файл прямо в Google, то откроется пустой лист. Это правильно, шаблон пустой. В нем только стиль Normal и стиль Heading 1 напоминают стиль хабра. Писать текст надо самому.
    Макрос в шаблоне перед применением надо скорректировать. В начале макроса находится такой блок

    Надо открыть файл как шаблон в Word-е, ввести правильные параметры и сохранить как шаблон.
    Потом можно щелкать на шаблон и писать статью. Сохранить статью и вызвать выполнение макроса ConvertToHabr.
    Если загрузка картинок прошла нормально об этом будет написано в строке состояния в окне Word.
    Начальный документ закроется, на его месте появится сконвертированный текст.

    Analyst Cave

    Today we will learn how to download and upload files using a VBA FTP script. FTP is a great way to keep your Excel files connected to your file servers, back up your files and worksheets automatically or simply download/upload document without any additional manual hassle.

    VBA FTP Download Files

    Let us start with learning how to Download Files from FTP using VBA FTP. The below code defines the procedure FtpDownload which does just that:


    Syntax

    strRemoteFile
    A string path to the file on the remote FTP drive which you want to download e.g. “//home/user/text file.txt”

    strLocalFile
    A string path to the file on the local drive which you want to save the remote file to e.g. “C:\text file.txt”

    strHost
    A string with the FTP server name e.g. “192.168.0.100” or “myserver.example.com”.

    lngPort
    A number specifying the FTP port. 21 by default.

    strUser
    A string with the FTP user name.

    strPass
    A string with the FTP user password.

    Example

    Now let us use the above VBA FTP Download procedure to download a file from our FTP server.

    VBA FTP Upload Files

    Now let us move to learning how to Upload Files from your local drive to FTP using VBA FTP. The below code defines the procedure FtpUpload which does just that:

    Syntax

    strLocalFile
    A string path to the file on the local drive which you want to upload e.g. “C:\text file.txt”
    strRemoteFile
    A string path with the name of the upload file on the remote drive to e.g. “//home/user/text file.txt”

    strHost
    A string with the FTP server name e.g. “192.168.0.100” or “myserver.example.com”.

    lngPort
    A number specifying the FTP port. 21 by default.

    strUser
    A string with the FTP user name.

    strPass
    A string with the FTP user password.

    Example

    Now let us use the above VBA FTP Download procedure to download a file from our FTP server.

    Summary and alternatives

    Downloading and Uploading files to an FTP server is a very useful task. Although there are several things to remember…

    Do not keep your password directly in your Workbook. Your password should be stored in a secure way and there is always a chance you might share your Excel Workbook without deleting the embedded password. A good tip is to save the password in a separate text file on your local drive to which no one else has access. See Reading Files in VBA to do this.

    Do you use FTP for file versioning? Use SVN or a dedicated solution instead! Although saving and versioning files to FTP is one way to go don’t rely on custom basic solution to long known problems. Setup SVN on your server of use a dedicated service like OneDrive, DropBox of Google Drive.

    Do you want to download files from web servers / pages not from FTP? See this post on Downloading Files using VBA.

    Илон Маск рекомендует:  Что такое код ccvs_delete
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL
  • MS ACCESS — FAQ по MS ACCESS
    Автор Joss
    10.07.2020 г.