Не могу скачать файл используя Internet Transfer Control

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Не могу скачать файл используя Internet Transfer Control

Сообщение HBasic » 17.04.2009 (Пт) 20:11

Вот исходный код:

Dim strUrl As String
Dim strSource As String
Dim strDest As String
Private Sub Start_Click()
strUrl = txtURLbox.Text
strSource = txtServerPath.Text
strDest = txtLocalPath.Text
Inet1.Execute strUrl, "GET" & strSource & "" & strDest
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
Select Case State
Case icResponseCompleted
Dim vtData As String
Open strDest For Binary Access Write As #1
vtData = Inet1.GetChunk(1024, icByteArray)
Line Input #1, vtData
Do While LenB(CStr(vtData)) > 0
Put #1, , vtData
vtData = Inet1.GetChunk(1024, icByteArray)
Loop
Put #1, , vtData
Close #1
End Select
End Sub

Событие получения данных по сети происходит(т.е. case срабатывает).Но функцией GetChunk возвращается какая-то белиберда из памяти.
Помогите пожалуйста.Вроде штука не сложная но все никак не заработает.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение iGrok » 17.04.2009 (Пт) 20:48

HBasic писал(а):Inet1.Execute strUrl, "GET" & strSource & "" & strDest

1) Ты там пробелы не забыл, случаем?
2) Ты пытаеьшся слить файл по FTP, или что-то другое?
label:
cli
jmp label

HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение HBasic » 17.04.2009 (Пт) 22:39

iGrok писал(а):
HBasic писал(а):Inet1.Execute strUrl, "GET" & strSource & "" & strDest

1) Ты там пробелы не забыл, случаем?

Нет.Проверял, пробелы там получаються.И иак в книжке написанно было.Да и ответ сервера приходит такой, что данные переданны.
iGrok писал(а):2) Ты пытаеьшся слить файл по FTP, или что-то другое?

Да, по ftp.

Меня смущает, что и в GET я задаю имя файла, куда сохранять принятое от сервера и потом еще задаю то же имя открывая файл вручную.Что-то тут не так, но конкретного примера не нашел.То, что я написал скомпанованно из 2-ух.
Помогите уважаемые гуру!

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение SeT » 18.04.2009 (Сб) 9:24

код модуля
Код: Выделить всё
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type

Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal nAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal nFlags As Long) As Long
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal nService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, ByRef lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, ByRef lpvFindData As WIN32_FIND_DATA) As Long
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer


код на форме:
Код: Выделить всё
Private Const INTERNET_SERVICE_FTP = 1
Private Const INTERNET_SERVICE_GOPHER = 2
Private Const INTERNET_SERVICE_HTTP = 3

Private hSession As Long
Private hINetSession  As Long

hINetSession = InternetOpen("MyFTPClient", 1, vbNullString, vbNullString, 0)
hSession = InternetConnect(hINetSession, "ftp.drweb.com", "21", "anonymous", "guest", INTERNET_SERVICE_FTP, 0, 0)

FtpGetFile(hSession, "файл на хосте", "куда копировать", False, 0, 1, 0)

InternetCloseHandle (hSession)
InternetCloseHandle (hINetSession)
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение HBasic » 20.04.2009 (Пн) 10:41

SeT писал(а):код модуля
Код: Выделить всё
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type

Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal nAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal nFlags As Long) As Long
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal nService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, ByRef lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, ByRef lpvFindData As WIN32_FIND_DATA) As Long
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer


код на форме:
Код: Выделить всё
Private Const INTERNET_SERVICE_FTP = 1
Private Const INTERNET_SERVICE_GOPHER = 2
Private Const INTERNET_SERVICE_HTTP = 3

Private hSession As Long
Private hINetSession  As Long

hINetSession = InternetOpen("MyFTPClient", 1, vbNullString, vbNullString, 0)
hSession = InternetConnect(hINetSession, "ftp.drweb.com", "21", "anonymous", "guest", INTERNET_SERVICE_FTP, 0, 0)

FtpGetFile(hSession, "файл на хосте", "куда копировать", False, 0, 1, 0)

InternetCloseHandle (hSession)
InternetCloseHandle (hINetSession)

Большое спасибо- работает.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение arvitaly » 20.04.2009 (Пн) 14:16

InternetWriteFile
InternetReadFile

А FtpGetFile надо полагать будет выполняться пока закачка не завершится

HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение HBasic » 25.04.2009 (Сб) 19:03

А есть ли функция из dll скачивающая по ftp целый каталог?

HBasic
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.03.2009 (Вс) 21:53

Re: Не могу скачать файл используя Internet Transfer Control

Сообщение HBasic » 25.04.2009 (Сб) 19:05

arvitaly писал(а):InternetWriteFile
InternetReadFile

Это функции Internet Transfer Control?Какие у них параметры?Их надо в StateChanged вызывать?
arvitaly писал(а):А FtpGetFile надо полагать будет выполняться пока закачка не завершится

Да.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

    TopList