Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Доступ к папке на фтп

2.2K
07 июля 2003 года
dark_legion
16 / / 17.06.2003
Вот закачать с одного фтп я могу файлы номано вот этой коммандой
Inet1.Execute "FTP://ftpname", "GET file.name C:\file.name"
а вот с другой фтп не могу :(
в чем может быть причина?
но это не в правах доступа, так как через фтп-клиент мона номано скачать файл(я консольно опробывал коммандыать, все качает номано), а вот так через VB никак не качат с нее :(
помогите разобраться в чем дело, плииииз :(
258
08 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by dark_legion
Подскажите пжалста, как мне приконнектится к определенной папке по определенному порту на фтп, под нужным паролем и логином?



Сам с FTP не работал (тока с почтой) так что могу дать только общие рекомендации.
Работать надо через ст. контролл - Winsock. Немного теории:
1. В начале, чтобы соединиться:
Winsock1.Protocol = sckTCPProtocol (можно сразу в свойствах устан.) ' тип протокола
Winsock1.RemoteHost = "127.1.0.0" ' адрес
Winsock1.RemotePort = 1111 ' порт

2. Соединяемся:
Winsock1.Connect

3. Отправляем данные:
sText="ля-ля"
Winsock1.SendData sText & vbCrlf
' vbCrlf обязательно надо заканчивать этим (вернее этими, здесь сразу два символа)

4. Получение данных через событие (например так):
Private Sub WInsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String

Winsock1.GetData strData, vbString
sResponse = strData
' sResponse - какая-нибудь глобальная перем.
End Sub

Принципы связи у протоколов типа FTP, POP и т.д. по сути одинаковые, различия составляют команды , которые посылаешь серверу (ну и ответы соотв.). В процессе установки связи почти все серверы отвечают - "+OK" если все в порядке.

С командами FTP я знаком слабо(но ты их легко найдешь в инете) так что ты подкорректируй код, если что будет не так.

Значит, напишем, например, общую функцию установки связи:

Код:
Private Function ConnectToFTP(strServer As String, strUser As String, strPwd As String) As Boolean

Dim strOut As String

ConnectToFTP = False

Winsock1.Protocol = sckTCPProtocol   Winsock1.RemoteHost = strServer
Winsock1.RemotePort = 21
Winsock1.Connect

' пауза, ждем ответа
WaitForOK 1, strOut

If strOut = "+OK" Then
Winsock1.SendData "USER " & strUser & vbCrlf
Else
ConnectToFTP = False
Exit Function
End If

WaitForOK 1, strOut

If strOut = "+OK" Then
Winsock1.SendData "PASS " & strPwd & vbCrlf
Else
ConnectToFTP = False
Exit Function
End If

WaitForOK 1, strOut

If strOut = "+OK" Then
ConnectToFTP = True
Else
ConnectToFTP = False
End If

End Function

Sub WaitForOK(tTime as Long, byRef strData As String)
dim StartTime  as long, Tmr  as long
StartTime = Timer ' Необходимо чтобы не зациклиться

Do While Len(Response) = 0
  Tmr = Timer-StartTime
  if Tmr >=tTime then
    Exit Do
  exit for
  DoEvents 'Чтобы программа могла реагировать на другие события во время выполнения цикла
Loop
strData =Left$(Response,3)
End Sub

Private Sub WInsock1_DataArrival(ByVal bytesTotal As Long)
   Dim strData As String

   Winsock1.GetData strData, vbString
   sResponse = strData
   ' sResponse - какая-нибудь глобальная перем.
End Sub


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

Команды,
поддерживаемые при работе с ftp:

Put [FileToNetwork] [FileNameToSaveOnServer]

Помещение файла на сервер
под другим именем. (Если нужно только
скопировать, то используйте команду Send [FileOnYourHardDriveToCopyToServer] – файл
будет скопирован в текущий каталог на сервере.

Get [FileFromNetwork] [FileNameToSaveOnDisk]


Из сети получается файл FileFromNetwork и
сохраняется на диске под именем FileNameToSaveOnDisk.

Cd [FolderOnServer]

Переход в другую папку на
сервере

Dir [FileName]

В текущем каталоге на
сервере ищется файл с именем
FileName.

MkDir [FolderName]

Нужно указать имя папки и
путь к ней на сервере, где необходимо ее создать.

Size [FileName]

Нужно указать путь к файлу
FileName, в случае,
если он не лежит в текущей папке. Эта операция
возвратит размер файла FileName.

Delete [FileName]

Удаление файла
258
08 июля 2003 года
SergeySV
1.5K / / 19.03.2003
аПечатки :) :
1. Response это sResponse
2. Время задержки, если в милисек., то 1000, а не 1
2.2K
08 июля 2003 года
dark_legion
16 / / 17.06.2003
Цитата:
Originally posted by SergeySV
аПечатки :) :
1. Response это sResponse
2. Время задержки, если в милисек., то 1000, а не 1



пасиба :)
тут опять просмотрели, так тама хоть указывал юзернэйм и пассворд так не шло, а вот как тока урл прописал с юзернэймом и пассвордом, так номано пошло.
но все равно пасиба огромное, так как и это к сведению возьму, мне все равно теперь надо все в базу аксессовскую толкать надо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог