一个星期没拿下来,累死了。求高手开恩给一个可用的FTP上传程序源码。
用inet控件或其它VB6内嵌的控件做的。

解决方案 »

  1.   

    这个是在网上拿的,说是测试一直正常。
    但我测试却是“与服务器连接时出现了错误”。
    这究竟是为什么呢?????????? Private Sub Command1_Click()
         yc = "b.jpg"
         bd = "c:\b.jpg"
        Inet1.URL = "ftp://xxx.xxx.xxx"
         
      Inet1.Protocol = icFTP
      Inet1.RemoteHost = "xxx.xxx.xx.xxx"
      Inet1.RemotePort = "21"
      Inet1.UserName = "xxxxxxx"
      Inet1.Password = "xxxxxxxx"
         
        Inet1.Execute , "put " & bd & " " & yc    'Put
        Do Until Inet1.StillExecuting = False
            DoEvents
       Loop
        MsgBox "上傳完成!"
     End Sub 'State
     Private Sub Inet1_StateChanged(ByVal State As Integer)
        Select Case State
            Case 0: Msg = "無狀態可報告。"
            Case 1: Msg = "正在查詢所指定的主機的 IP 位址。"
            Case 2: Msg = "已成功地找到所指定的主機的 IP 位址。"
            Case 3: Msg = "正在與主機連接。"
            Case 4: Msg = "已與主機連接成功。"
            Case 5: Msg = "正在向主機傳送請求。"
             Case 6: Msg = "傳送請求已成功。"
             Case 7: Msg = "正在接收主機的回應。"
            Case 8: Msg = "已成功地接收到主機的回應。"
           Case 9: Msg = "正在解除與主機的連接。"
           Case 10: Msg = "已成功地與主機解除了連接。"
             Case 11: Msg = "與主機通訊時出現了錯誤。"
           Case 12: Msg = "此請求已經完成,並且所有資料均已接收到。"
        End Select
        Label1 = Msg    '用一個 Label 顯示連線狀態
    End Sub
      

  2.   

    设置没问题的。其它FTP工具可以正常上传下载的。
      

  3.   

        Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
        Const FTP_TRANSFER_TYPE_ASCII = &H1
        Const FTP_TRANSFER_TYPE_BINARY = &H2
        Const INTERNET_DEFAULT_FTP_PORT = 21        ' default for FTP servers
        Const INTERNET_SERVICE_FTP = 1
        Const INTERNET_FLAG_PASSIVE = &H8000000     ' used for FTP connections
        Const INTERNET_OPEN_TYPE_PRECONFIG = 0      ' use registry configuration
        Const INTERNET_OPEN_TYPE_DIRECT = 1         ' direct to net
        Const INTERNET_OPEN_TYPE_PROXY = 3          ' via named proxy
        Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 ' prevent using java/script/INS
        Const MAX_PATH = 260
        Private Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
        End Type
        Private 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 * MAX_PATH              '用于存放文件名的字符串
            cAlternate As String * 14
        End Type
        Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
        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 lService As Long, _
                                                                                             ByVal lFlags As Long, _
                                                                                             ByVal lContext As Long) As Long
        Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, _
                                                                                             ByVal lAccessType As Long, _
                                                                                             ByVal sProxyName As String, _
                                                                                             ByVal sProxyBypass As String, _
                                                                                             ByVal lFlags As Long) As Long
        Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
                                                                  "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
                                                                                             ByVal lpszDirectory As String) As Boolean
        Private Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias _
                                                                  "FtpGetCurrentDirectoryA" (ByVal hFtpSession As Long, _
                                                                                             ByVal lpszCurrentDirectory As String, _
                                                                                                   lpdwCurrentDirectory As Long) As Long
        Private Declare Function FtpCreateDirectory Lib "wininet.dll" Alias _
                                                                      "FtpCreateDirectoryA" (ByVal hFtpSession As Long, _
                                                                                             ByVal lpszDirectory As String) As Boolean
        Private Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As Long, _
                                                                                                   ByVal lpszDirectory As String) As Boolean
        Private Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _
                                                                                         ByVal lpszFileName As String) As Boolean
        Private Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" (ByVal hFtpSession As Long, _
                                                                                         ByVal lpszExisting As String, _
                                                                                         ByVal lpszNew As String) As Boolean
        Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hConnect As Long, _
                                                                                   ByVal lpszRemoteFile As String, _
                                                                                   ByVal lpszNewFile As String, _
                                                                                   ByVal fFailIfExists As Long, _
                                                                                   ByVal dwFlagsAndAttributes As Long, _
                                                                                   ByVal dwFlags As Long, _
                                                                                   ByRef dwContext As Long) As Boolean
        Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, _
                                                                                   ByVal lpszLocalFile As String, _
                                                                                   ByVal lpszNewRemoteFile As String, _
                                                                                   ByVal dwFlags As Long, _
                                                                                   ByVal dwContext As Long) As Boolean
        Private Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias _
                                                         "InternetGetLastResponseInfoA" (lpdwError As Long, _
                                                                                   ByVal lpszBuffer As String, _
                                                                                         lpdwBufferLength As Long) As Boolean
        Private Declare Function FtpFindFirstFile Lib "wininet.dll" Alias _
                                                              "FtpFindFirstFileA" (ByVal hFtpSession As Long, _
                                                                                   ByVal lpszSearchFile As String, _
                                                                                         lpFindFileData As WIN32_FIND_DATA, _
                                                                                   ByVal dwFlags As Long, _
                                                                                   ByVal dwContent As Long) As Long
        Private Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
      

  4.   

    晕啊,我用其它的虚拟主机这个程序是可以的啊。
    在某个虚拟主机提供商的两个FTP地址上都不行啊。
    为什么会这样呢?
    这不行的返回信息,是拒绝访问的意思。是哪里设置不当么?
      

  5.   

    是不是防火墙把port 21禁止了?
      

  6.   

    我有个用RouterOs做的ftp服务器,用控件死活都不能上传。后来改用API试试了。就是那几个api
      

  7.   

    既然只是某些ftp站点不好用 那就不完全是你程序的问题,因为访问ftp站点分主动模式和被动模式,如果选择不对也是连不上的 大部分ftp站都支持被动模式 但有些ftp站会禁用被动模式 这就会导致局域网共享用户无法正常下载上传 因为被动模式会在服务器主机上另开端口 对安全要求高的站会禁用被动模式,你的问题可能仅此而已