Передача файла (файлов) по FTP - VB

Узнай цену своей работы

Формулировка задачи:

Хотел передать файл по FTP с помощью Internet Transfer Control (MSINET.OCX), по началу получалось по этому примеру:
А потом он пересылал только образ файла, то бишь имя а сам файл пустой (0 кб). Почему??? В скоре я понял что как ни как, но если кому то посылать программу то не у всех есть MSINET.ocx . поэтому я решил использовать API :
Этот пример API работает НО он тоже присылает пустой файл, к тому же если грузить через VB6, то компилятор вместе с ним виснит и вылетает. Ребят, что мне делать? Может что не так сделал?

Решение задачи: «Передача файла (файлов) по 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5