Передача файла (файлов) по FTP - VB
Формулировка задачи:
Хотел передать файл по FTP с помощью Internet Transfer Control (MSINET.OCX), по началу получалось по этому примеру:
А потом он пересылал только образ файла, то бишь имя а сам файл пустой (0 кб). Почему???
В скоре я понял что как ни как, но если кому то посылать программу то не у всех есть MSINET.ocx . поэтому я решил использовать API :
Этот пример API работает НО он тоже присылает пустой файл, к тому же если грузить через VB6, то компилятор вместе с ним виснит и вылетает.
Ребят, что мне делать?
Может что не так сделал?
Листинг программы
- With Inet1
- .URL = "ftp.name.ru"
- .UserName = "Login"
- .Password = "Pass"
- .Execute ,"PUT C:\113\text.txt /folder/text.txt"
- End With
Листинг программы
- Private 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
- Private 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
- Private Const INTERNET_SERVICE_FTP = 1
- Private Const INTERNET_SERVICE_GOPHER = 2
- Private Const INTERNET_SERVICE_HTTP = 3
- Private Declare Function InternetCloseHandle _
- Lib "wininet.dll" (ByVal hInet As Long) As Integer
- Private Declare Function FtpPutFile _
- Lib "wininet.dll" Alias "FtpPutFileA" ( _
- ByVal hFtpSession As Long, _
- ByVal lpszLocalFile As String, _
- ByVal lpszRemoteFile As String, _
- ByVal dwFlags As Long, _
- ByVal dwContext As Long) As Boolean
- Private Sub Form_Load()
- hINetSession = InternetOpen("MyFTPClient", 0, vbNullString, vbNullString, 0)
- hSession = InternetConnect(hINetSession, "ftp.name.ru", _
- "21", "login", "pass", INTERNET_SERVICE_FTP, 0, 0)
- If FtpPutFile(hSession, "C:\113\text.txt", "/folder/text.txt", 1, 0) = False Then
- MsgBox "The call to FtpPutFile failed."
- End If
- End Sub
Решение задачи: «Передача файла (файлов) по FTP»
textual
Листинг программы
- Option Explicit
- Private 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
- Private 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
- Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
- Private 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
- Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
- Dim rc&
- Dim rs&
- Private Sub Command1_Click()
- rc& = InternetOpen("", 0, vbNullString, vbNullString, 0)
- rs& = InternetConnect(rc&, "ftp.narod.ru", "21", "ЛОГИН", "ПАРОЛЬ", 1, 0, 0)
- 'If FtpGetFile(rs&, "ИМЯ ФАЙЛА НА СЕРВЕРЕ + РАСШИРЕНИЕ", "КУДА СОХРАНИТЬ + ИМЯ ФАЙЛА И РАСШИРЕНИЕ", False, 0, 1, 0) = False Then MsgBox "Ошибка получения файла!", vbExclamation
- If FtpPutFile(rs&, "ОТКУДА ОТПРАВИТЬ ФАЙЛ + ЕГО ИМЯ И РАСШИРЕНИЕ", "КУДА СОХРАНИТЬ + ИМЯ ФАЙЛА И РАСШИРЕНИЕ", 1, 0) = False Then MsgBox "Ошибка отправки файла!", vbExclamation
- Call InternetCloseHandle(rs&)
- Call InternetCloseHandle(rc&)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д