Доступ к папке на фтп
Inet1.Execute "FTP://ftpname", "GET file.name C:\file.name"
а вот с другой фтп не могу :(
в чем может быть причина?
но это не в правах доступа, так как через фтп-клиент мона номано скачать файл(я консольно опробывал коммандыать, все качает номано), а вот так через VB никак не качат с нее :(
помогите разобраться в чем дело, плииииз :(
Подскажите пжалста, как мне приконнектится к определенной папке по определенному порту на фтп, под нужным паролем и логином?
Сам с 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 я знаком слабо(но ты их легко найдешь в инете) так что ты подкорректируй код, если что будет не так.
Значит, напишем, например, общую функцию установки связи:
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]
Удаление файла
1. Response это sResponse
2. Время задержки, если в милисек., то 1000, а не 1
аПечатки :) :
1. Response это sResponse
2. Время задержки, если в милисек., то 1000, а не 1
пасиба :)
тут опять просмотрели, так тама хоть указывал юзернэйм и пассворд так не шло, а вот как тока урл прописал с юзернэймом и пассвордом, так номано пошло.
но все равно пасиба огромное, так как и это к сведению возьму, мне все равно теперь надо все в базу аксессовскую толкать надо.