Консультация № 69446
03.01.2007, 21:06
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты! У меня такое дело...сложное или нет Вам судить:
хотелось бы автоматизировать обновление моего сайта с помошью VisualBasic.
Чтобы прога при подключении сама из директории допустим из папки Update моего компа копировала файлы обновления на ftp моего сайта. Возможно ли это?
Опишите по подробнее, если можно с примерами. Надеюсь на Вашу помошь!!!

Обсуждение

давно
Профессионал
848
1596
03.01.2007, 22:42
общий
это ответ
Здравствуйте, Чалагаев И.Г!
Пример работы по фтп на ВБ, думаю сможете извлечь для себя выгоду.

http://www.freevbcode.com/ShowCode.Asp?ID=731
http://www.freevbcode.com/ShowCode.Asp?ID=5311
Неизвестный
04.01.2007, 09:34
общий
это ответ
Здравствуйте, Чалагаев И.Г!
Могу предложить решение с помощью WinInet API, для начала скачайте модуль с описаниями функций Wininet с
http://download.microsoft.com/download/vb40ent/Sample37/1/W9XNT4/EN-US/VbInet.exe

в приложении пример их использования:
на форме 5 текстовых полей:
Text1 - для ввода адреса ftp сервера(ex: ftp.microsoft.com);
Text2 - для ввода имени ftp пользователя;
Text3 - для ввода пароля ftp пользователя;
Text4 - для ввода имени локального файла который нужно закачать (ex: d:\WBINET.Bas)
Text5 - для ввода имени файла на сервере;

один CheckBox: Check1 - для переключения м/д текстовым и бинарным режимами;

и одна кнопка Command1 - по нажатию на которую, на сервер Text1.Text закачается файл Text4.Text.

я проверял в Excel VBA - все работает.
подробности по WinInet можно посмотреть в любом справочнике по Windows API.
как закачивать все файлы из папки, я думаю разберетесь.
Будут вопросы, пишите.
Успехов.

Приложение:
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘Модуль формы‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘Option ExplicitPrivate Sub Command1_click() On Error Resume Next Dim blnBin As Boolean blnBin = False If Check1.Value = 1 Then blnBin = True If InitializeFTP Then MsgBox "FTP initialized" If ConnectToFTPServer(Text1.Text, Text2.Text, Text3.Text) Then MsgBox "Connected to server" PutFileOnFTPServer Text4.Text, _ Text5.Text, blnBin MsgBox "File transferred" End If CloseFTP MsgBox "Connection closed" End If If Err.Number <> 0 Then MsgBox "Error in Command1_Click: " & _ Err.Number & " - " & Err.DescriptionEnd Sub‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘Простой Модуль Module1‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘Option ExplicitDeclare Function GetLastError% Lib "kernel32" ()Public lngInternetHandle As LongPublic lngFtpHandle As LongPublic hOpenUrl As LongPublic Function InitializeFTP() As Boolean On Error Resume Next Dim sUrl As String lngInternetHandle = 0 lngInternetHandle = InternetOpen("Microsoft Internet Explorer", _ INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0) If Err.Number <> 0 Or lngInternetHandle = 0 Then MsgBox "Failed to initialize communications to transfer data" & _ vbCrLf & Err.Description InitializeFTP = False Else InitializeFTP = True End IfEnd FunctionPublic Function ConnectToFTPServer(ByVal strFTPServerName As String, _ ByVal strUsername As String, ByVal strPassword As String) As Boolean On Error Resume Next lngFtpHandle = InternetConnect(lngInternetHandle, strFTPServerName, _ INTERNET_DEFAULT_FTP_PORT, strUsername, strPassword, _ INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0) If lngFtpHandle = 0 Or Err.Number <> 0 Then MsgBox "Failed to connect to server to transfer data. Error: " & _ CStr(GetLastError) ConnectToFTPServer = False Else ConnectToFTPServer = True End IfEnd FunctionPublic Function PutFileOnFTPServer(ByVal strSourceFilename As String, _ ByVal strDestFilename As String, _ ByVal blnBinaryFile As String) As Boolean On Error Resume Next Dim blnTransferredOK As Boolean Dim lngTransferType As Long If blnBinaryFile Then lngTransferType = FTP_TRANSFER_TYPE_BINARY Else lngTransferType = FTP_TRANSFER_TYPE_ASCII End If blnTransferredOK = FtpPutFile(lngFtpHandle, strSourceFilename, _ strDestFilename, lngTransferType, 0) If blnTransferredOK = 0 Then MsgBox "Transfer of file " & strSourceFilename & _ " to server failed. Error: " & CStr(GetLastError()) Else MsgBox "Transfer of file" & strSourceFilename & " succeeded!" End If PutFileOnFTPServer = blnTransferredOKEnd FunctionPublic Sub CloseFTP() On Error Resume Next InternetCloseHandle lngFtpHandle InternetCloseHandle lngInternetHandleEnd Sub
Форма ответа