文件管理 · 2022年8月5日

vbwininet下载文件|\vb 中怎么样利用api函数从远程ftp上下载或者复制文件夹

Ⅰ 用vb实时检查文件的大小,做进度条用,那位大神能给个提示 或者用vb实现ftp下载功能,带进度条

用vb实时检查文件的大小FileLen(文件的实际全路径及名称,如C:\AAA\BBB.EXE)示例:MsgBox "文件大小: " & FileLen("C:\aaa\bbb.exe") & "字节" VB的FTP下载文件示例:模块里声明:Option ExplicitPublic 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 LongPublic 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 LongPublic 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 BooleanPublic Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As IntegerPublic 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 LongPublic Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _(ByVal hFind As Long, lpvFndData As WIN32_FIND_DATA) As LongPublic Const INTERNET_OPEN_TYPE_PRECONFIG = 0Public Const INTERNET_OPEN_TYPE_DIRECT = 1Public Const INTERNET_OPEN_TYPE_PROXY = 3Public Const scUserAgent = "VB OpenUrl"Public Const INTERNET_FLAG_RELOAD = &H80000000窗体里应用:Private Sub Command1_Click() Dim lnginet As Long Dim lnginetconn As Long Dim blnRC As Boolean lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ vbNullString, vbNullString, 0&) If lnginet Then lnginetconn = InternetConnect(lnginet, FTP地址,端口号, 用户名, 密码, 1, 0, 0) If lnginetconn Then blnRC = FtpGetFile(lnginetconn, 下载文件名, 保存到本地文件名, 0, 0, 1, 0) If blnRC Then MsgBox "download ok!!!" End If InternetCloseHandle lnginetconn InternetCloseHandle lnginet MsgBox "close ok!!!" Else MsgBox "can't connect" End If Else MsgBox "ftp wrong" End IfEnd Sub

Ⅱ VB DownloadFile的BUG

'删除缓存Public Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long用这个API删除掉缓存的文件就可以了

Ⅲ 关于VB中 wininet API函数异步问题

'我用VB做了过FTP程序,现把主要代码部分给你!'登录服务器并下载文件部分,里面用到的API和参数在另外一个模块中声明.Private Sub Cmd_Down_All_Click() Dim pData As WIN32_FIND_DATA '查找文件的信息结构 Dim Hdl_Find_First As Long '查找文件函数句柄 'Dim intError As Integer Dim File_Time As SYSTEMTIME '将文件时间转换成系统时间 Dim temp_date As Integer '用来判断时间差 Dim i As Integer '记录处理的文件数 Me.MousePointer = 13 '鼠标指针示忙 i = 0 '启用FTP服务 Hdl_Int_Open = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ vbNullString, vbNullString, 0&) If Hdl_Int_Open Then '连接FTP服务器 第6个参数为"1" 表示FTP连接 Hdl_Int_Conn = InternetConnect(Hdl_Int_Open, Source_IP.Text, 0, _ Source_Name.Text, Source_PWD.Text, 1, 0, 0) '从文本框取IP、用户名、密码 If Hdl_Int_Conn Then Bool_ChDir = FtpSetCurrentDirectory(Hdl_Int_Conn, Source_Path.Text) '改变服务器文件路径 Hdl_Find_First = FtpFindFirstFile(Hdl_Int_Conn, FILE_TYPE_DOWN, pData, 0, 0) '开始搜索文件 If Hdl_Find_First Then Do Call FileTimeToSystemTime(pData.ftLastWriteTime, File_Time) '将文件时间转化为系统时间 temp_date = Now() – DateSerial(File_Time.wYear, File_Time.wMonth, File_Time.wDay) '计算时间差 If temp_date <= DOWN_SERV_DAYS Then File_Name_Source = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) – 1) File_Name_Dest = Source_path_list.Path & "\" & File_Name_Source '下载文件 Bool_Locate_File = FtpGetFile(Hdl_Int_Conn, File_Name_Source, File_Name_Dest, 0, 0, 1, 0) If Bool_Locate_File Then Dim pos As Integer pos = InStr(File_Name_Source, Right(FILE_TYPE_DOWN, 4)) If FtpRenameFile(Hdl_Int_Conn, File_Name_Source, Left$(File_Name_Source, pos – 1) & ".ok") Then '下载后更名 Process_Msg = Now() & " 下载成功:" & File_Name_Source i = i + 1 Else Process_Msg = Now() & " 更名失败:" & File_Name_Source Err_Flag = 1 End If Else Process_Msg = Now() & " 下载失败:" & File_Name_Source & "#" & GetErr(Err.LastDllError) End If 'Bool_Locate_File Source_log.Text = Source_log.Text & vbNewLine & Process_Msg End If Loop While InternetFindNextFile(Hdl_Find_First, pData) Process_Msg = Now() & " 处理的文件数:" & i Else Process_Msg = Now() & " 没有找到符合条件的文件." End If 'Hdl_Find_First Else Process_Msg = Now() & " 连接服务器失败:" & "#" & GetErr(Err.LastDllError) End If Else Process_Msg = Now() & " 打开FTP服务失败:" & "#" & GetErr(Err.LastDllError) End If Source_log.Text = Source_log.Text & vbNewLine & Process_Msg '记录处理信息到文本框 InternetCloseHandle Hdl_Find_First '关闭各连接句柄,即断开服务器 InternetCloseHandle Hdl_Int_Conn InternetCloseHandle Hdl_Int_Open Me.MousePointer = 0 '鼠标指针示闲End Sub

Ⅳ vb wininet 下载问题

给你提供个 FTP 上传的代码。自己领悟Option ExplicitPrivate Const INTERNET_OPEN_TYPE_DIRECT = 1Private Const scuseragent = "vb wininet"Private Const INTERNET_FLAG_PASSIVE = &H8000000'调用设置环境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 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 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 BooleanPrivate 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 BooleanPrivate Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As IntegerDim hOpen As LongDim hConnection As Long'上传文件模块Public Function UpLoadFile(IP As String, FileName As String, UserName As String, PassWord As String) As Boolean Dim ShortName As String Dim ret As Boolean ShortName = GetShortName(FileName) hOpen = TestServer If hOpen <> 0 Then hConnection = InterConnection(IP, UserName, PassWord) If hConnection <> 0 Then ret = FtpPutFile(hConnection, FileName, ShortName, 2, 0) UpLoadFile = ret Else UpLoadFile = False End If Else UpLoadFile = False End If InternetCloseHandle hConnection InternetCloseHandle hOpenEnd Function'FTP下载文件Public Function DownLoadFile(IP As String, FileName As String, LocalFileName As String, UserName As String, PassWord As String) Dim ret As Boolean hOpen = TestServer If hOpen <> 0 Then hConnection = InterConnection(IP, UserName, PassWord) If hConnection <> 0 Then ret = FtpGetFile(hConnection, FileName, LocalFileName, 0, 0, 1, 0) DownLoadFile = ret Else DownLoadFile = False End If Else DownLoadFile = False End If InternetCloseHandle hConnection InternetCloseHandle hOpenEnd Function'调用设置环境Private Function TestServer() As Long Dim i As Long' i = InternetOpen(scuseragent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) i = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) TestServer = iEnd Function'连接服务器Private Function InterConnection(IP As String, UserName As String, PassWord As String) As Long Dim i As Long i = InternetConnect(hOpen, IP, 0, UserName, PassWord, 1, INTERNET_FLAG_PASSIVE, 0) InterConnection = iEnd Function'得到文件的短文件名Private Function GetShortName(FileName As String) As String Dim stemp() As String stemp = Split(FileName, "\") If UBound(stemp) > 0 Then GetShortName = stemp(UBound(stemp)) Else GetShortName = "" End IfEnd Function

Ⅳ 绝对高分求客户端向服务器上传与下载文件的程序

==========上传部分================ 一 WEB部分 1 首先把WEB页获得本地要上传的文件名 2 WEB通过脚本把本地文件名(绝对路径)给客户端组件 3 WEB脚本控制组件开始传送数据 4 最后判断是否传输成功 二 组件部分 1 建立INTERNET连接 2 连接FTP服务器 3 获得本地文件名(绝对路径) 4 返回远程即将保存的文件名 5 传送数据 6 判断是否传输成功,返回状态 WEB页获取本地文件 组件返回远程文件名 组件传送数据 返回 本例在VB6.0 +WIN2000+ IIS5.0 + SERV-U 5.0 下调试成功 VB部分 一、建立一个ActiveX DLL工程 二、更改工程名FtpConn 三、更改类名:clsPutFile 四、加入一个空模块到工程中,此模块主要对需要使用的函数进行声明,在此不多做解释,代码如下: Option Explicit Declare Function GetProcessHeap Lib "kernel32" () As Long Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long Public Const HEAP_ZERO_MEMORY = &H8 Public Const HEAP_GENERATE_EXCEPTIONS = &H4 Declare Sub CopyMemory1 Lib "kernel32" Alias "RtlMoveMemory" ( _ hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) Declare Sub CopyMemory2 Lib "kernel32" Alias "RtlMoveMemory" ( _ hpvDest As Long, hpvSource As Any, ByVal cbCopy As Long) Public Const MAX_PATH = 260 Public Const NO_ERROR = 0 Public Const FILE_ATTRIBUTE_READONLY = &H1 Public Const FILE_ATTRIBUTE_HIDDEN = &H2 Public Const FILE_ATTRIBUTE_SYSTEM = &H4 Public Const FILE_ATTRIBUTE_DIRECTORY = &H10 Public Const FILE_ATTRIBUTE_ARCHIVE = &H20 Public Const FILE_ATTRIBUTE_NORMAL = &H80 Public Const FILE_ATTRIBUTE_TEMPORARY = &H100 Public Const FILE_ATTRIBUTE_COMPRESSED = &H800 Public Const FILE_ATTRIBUTE_OFFLINE = &H1000 Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type 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 Public Const ERROR_NO_MORE_FILES = 18 Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _ (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long Public 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 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 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 Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _ (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean ' Initializes an application's use of the Win32 Internet functions Public 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 ' User agent constant. Public Const scUserAgent = "vb wininet" ' Use registry access settings. Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0 Public Const INTERNET_OPEN_TYPE_DIRECT = 1 Public Const INTERNET_OPEN_TYPE_PROXY = 3 Public Const INTERNET_INVALID_PORT_NUMBER = 0 Public Const FTP_TRANSFER_TYPE_ASCII = &H1 Public Const FTP_TRANSFER_TYPE_BINARY = &H1 Public Const INTERNET_FLAG_PASSIVE = &H8000000 ' Opens a HTTP session for a given site. 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 lService As Long, _ ByVal lFlags As Long, ByVal lContext As Long) As Long Public Const ERROR_INTERNET_EXTENDED_ERROR = 12003 Public Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" ( _ lpdwError As Long, _ ByVal lpszBuffer As String, _ lpdwBufferLength As Long) As Boolean ' Number of the TCP/IP port on the server to connect to. Public Const INTERNET_DEFAULT_FTP_PORT = 21 Public Const INTERNET_DEFAULT_GOPHER_PORT = 70 Public Const INTERNET_DEFAULT_HTTP_PORT = 80 Public Const INTERNET_DEFAULT_HTTPS_PORT = 443 Public Const INTERNET_DEFAULT_SOCKS_PORT = 1080 Public Const INTERNET_OPTION_CONNECT_TIMEOUT = 2 Public Const INTERNET_OPTION_RECEIVE_TIMEOUT = 6 Public Const INTERNET_OPTION_SEND_TIMEOUT = 5 Public Const INTERNET_OPTION_USERNAME = 28 Public Const INTERNET_OPTION_PASSWORD = 29 Public Const INTERNET_OPTION_PROXY_USERNAME = 43 Public Const INTERNET_OPTION_PROXY_PASSWORD = 44 ' Type of service to access. Public Const INTERNET_SERVICE_FTP = 1 Public Const INTERNET_SERVICE_GOPHER = 2 Public Const INTERNET_SERVICE_HTTP = 3 ' Opens an HTTP request handle. Public Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" _ (ByVal hHttpSession As Long, ByVal sVerb As String, ByVal sObjectName As String, ByVal sVersion As String, _ ByVal sReferer As String, ByVal something As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long ' Brings the data across the wire even if it locally cached. Public Const INTERNET_FLAG_RELOAD = &H80000000 Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000 Public Const INTERNET_FLAG_MULTIPART = &H200000 Public Const GENERIC_READ = &H80000000 Public Const GENERIC_WRITE = &H40000000 ' Sends the specified request to the HTTP server. Public Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal _ hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As _ String, ByVal lOptionalLength As Long) As Integer ' Queries for information about an HTTP request. Public Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" _ (ByVal hHttpRequest As Long, ByVal lInfoLevel As Long, ByRef sBuffer As Any, _ ByRef lBufferLength As Long, ByRef lIndex As Long) As Integer ' The possible values for the lInfoLevel parameter include: Public Const HTTP_QUERY_CONTENT_TYPE = 1 Public Const HTTP_QUERY_CONTENT_LENGTH = 5 Public Const HTTP_QUERY_EXPIRES = 10 Public Const HTTP_QUERY_LAST_MODIFIED = 11 Public Const HTTP_QUERY_PRAGMA = 17 Public Const HTTP_QUERY_VERSION = 18 Public Const HTTP_QUERY_STATUS_CODE = 19 Public Const HTTP_QUERY_STATUS_TEXT = 20 Public Const HTTP_QUERY_RAW_HEADERS = 21 Public Const HTTP_QUERY_RAW_HEADERS_CRLF = 22 Public Const HTTP_QUERY_FORWARDED = 30 Public Const HTTP_QUERY_SERVER = 37 Public Const HTTP_QUERY_USER_AGENT = 39 Public Const HTTP_QUERY_SET_COOKIE = 43 Public Const HTTP_QUERY_REQUEST_METHOD = 45 Public Const HTTP_STATUS_DENIED = 401 Public Const HTTP_STATUS_PROXY_AUTH_REQ = 407 ' Add this flag to the about flags to get request header. Public Const HTTP_QUERY_FLAG_REQUEST_HEADERS = &H80000000 Public Const HTTP_QUERY_FLAG_NUMBER = &H20000000 ' Reads data from a handle opened by the HttpOpenRequest function. Public Declare Function InternetReadFile Lib "wininet.dll" _ (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, _ lNumberOfBytesRead As Long) As Integer Public Declare Function InternetWriteFile Lib "wininet.dll" _ (ByVal hFile As Long, ByVal sBuffer As String, _ ByVal lNumberOfBytesToRead As Long, _ lNumberOfBytesRead As Long) As Integer Public Declare Function FtpOpenFile Lib "wininet.dll" Alias _ "FtpOpenFileA" (ByVal hFtpSession As Long, _ ByVal sFileName As String, ByVal lAccess As Long, _ ByVal lFlags As Long, ByVal lContext As Long) As Long Public Declare Function FtpDeleteFile Lib "wininet.dll" _ Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _ ByVal lpszFileName As String) As Boolean Public Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" _ (ByVal hInternet As Long, ByVal lOption As Long, ByRef sBuffer As Any, ByVal lBufferLength As Long) As Integer Public Declare Function InternetSetOptionStr Lib "wininet.dll" Alias "InternetSetOptionA" _ (ByVal hInternet As Long, ByVal lOption As Long, ByVal sBuffer As String, ByVal lBufferLength As Long) As Integer ' Closes a single Internet handle or a subtree of Internet handles. Public Declare Function InternetCloseHandle Lib "wininet.dll" _ (ByVal hInet As Long) As Integer ' Queries an Internet option on the specified handle Public Declare Function InternetQueryOption Lib "wininet.dll" Alias "InternetQueryOptionA" _ (ByVal hInternet As Long, ByVal lOption As Long, ByRef sBuffer As Any, ByRef lBufferLength As Long) As Integer ' Returns the version number of Wininet.dll. Public Const INTERNET_OPTION_VERSION = 40 ' Contains the version number of the DLL that contains the Windows Internet ' functions (Wininet.dll). This structure is used when passing the ' INTERNET_OPTION_VERSION flag to the InternetQueryOption function. Public Type tWinInetDLLVersion lMajorVersion As Long lMinorVersion As Long End Type ' Adds one or more HTTP request headers to the HTTP request handle. Public Declare Function HttpAddRequestHeaders Lib "wininet.dll" Alias "HttpAddRequestHeadersA" _ (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, _ ByVal lModifiers As Long) As Integer ' Flags to modify the semantics of this function. Can be a combination of these values: ' Adds the header only if it does not already exist; otherwise, an error is returned. Public Const HTTP_ADDREQ_FLAG_ADD_IF_NEW = &H10000000 ' Adds the header if it does not exist. Used with REPLACE. Public Const HTTP_ADDREQ_FLAG_ADD = &H20000000 ' Replaces or removes a header. If the header value is empty and the header is found, ' it is removed. If not empty, the header value is replaced Public Const HTTP_ADDREQ_FLAG_REPLACE = &H80000000 五、输入类代码,代码如下: Option Explicit Dim bActiveSession As Boolean Dim hOpen As Long Dim hConnection As Long Dim scUserAgent As String Dim strServer As String Dim strUser As String Dim strPassword As String Dim nFlag As Long Dim bRet As Boolean Dim szFileLocal As String Dim szFileRemote As String Dim dwType As Integer Public Function PUTFILE() As Boolean On Error Resume Next hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) hConnection = InternetConnect(hOpen, strServer, INTERNET_INVALID_PORT_NUMBER, strUser, strPassword, INTERNET_SERVICE_FTP, nFlag, 0) bRet = FtpPutFile(hConnection, szFileLocal, szFileRemote, _ dwType, 0) Call CloseConn PUTFILE = bRet End Function Sub CloseConn() If hConnection <> 0 Then InternetCloseHandle hConnection hConnection = 0 End Sub Function getRemoteName(filename) Dim arrName() As String arrName = Split(filename, ".") Randomize getRemoteName = Date & CInt(Rnd * 1000) & "." & arrName(UBound(arrName)) End Function Private Sub Class_Initialize() scUserAgent = "My FTP" strServer = "www.XXX.cn" strUser = "Username" strPassword = "Password" nFlag = INTERNET_FLAG_PASSIVE szFileLocal = "DefultLocalFileName" szFileRemote = "DefultRemoteFileName" dwType = 1 End Sub Public Property Get connServer() As Variant connServer = strServer End Property Public Property Let connServer(ByVal vNewValue As Variant) strServer = vNewValue End Property Public Property Get connUser() As Variant connUser = strUser End Property Public Property Let connUser(ByVal vNewValue As Variant) strUser = vNewValue End Property Public Property Get connPassword() As Variant connPassword = strPassword End Property Public Property Let connPassword(ByVal vNewValue As Variant) strPassword = vNewValue End Property Public Property Let LocalFileName(ByVal vNewValue As Variant) szFileLocal = vNewValue szFileRemote = getRemoteName(vNewValue) End Property Public Property Get RemoteFileName() As Variant RemoteFileName = szFileRemote End Property 六、生成DLL 七、使用VB6的打包工具打包成“Internet ActiveX 安装包”,这是,VB打包后,还会给一个例子的HTML文件 八、建立HTML文件 <HTML> <HEAD> <TITLE>FtpConn.CAB</TITLE> </HEAD> <BODY> <OBJECT ID="clsPutFile" CLASSID="CLSID:D9BACC8F-0A99-46DA-ADA3-F1C25A48AA78" CODEBASE="FtpConn.CAB#version=1,0,0,0"> </OBJECT> <INPUT type="file" name="FileName"><button onclick="go()">GO~!</button> <SCRIPT LANGUAGE="JavaScript"> <!– by Newrocky 2004-12-7 QQ:1936234 function go() { if (FileName.value!='') { clsPutFile.LocalFileName=FileName.value; alert(clsPutFile.RemoteFileName);//查看远程文件名 if (clsPutFile.PutFile()) //开始传送文件,如果返回true则成功,反之失败 { alert('上传文件成功!'); } else { alert('上传文件失败!') } } else { alert('请选择您要上传的文件'); } } //–> </SCRIPT> </BODY> </HTML> ok~! ===============下载部分============= 首先,声明一些变量 Dim strCommand As String Dim strWebPage As String 为了动态设置Winsock控件的一些属性,在“开始”按钮的Click事件加入以下代码。 Winsock1.RemoteHost="192.168.100.101" '设置连接的IP地址 Winsock1.RemotePort = 80 '设置连接的远程端口号 Winsock1.Connect '开始连接远程计算机。 当Winsock控件连接操作完成,就可以传送FTP命令给服务器了,因此在Winsock控件的Connect事件中加入以下代码: On Error Resume Next '在错误处理程序结束后,恢复原有的运行 strWebPage= " 192.168.100.101/main.htm" '设置要下载的文件'添加FTP中取得文件的命令(GET) strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf strCommand = strCommand + "Accept: */*" + vbCrLf strCommand = strCommand + "Accept: text/html" + vbCrLf strCommand = strCommand + vbCrLf '必须以vbCrLf结束命令 Winsock1.SendData strCommand '向远程计算机发送命令 当Winsock控件获取到数据时,需要对数据进行处理,本例中将获取的内容显示在文本框控件中,因此在Winsock控件的DataArrival事件加入以下代码: On Error Resume Next '在错误处理程序结束后,恢复原有的运行 Dim webData As String Winsock1.GetData webData,vbString '获取当前的数据块 Text1.Text = Text1.Text + webData '显示接收到的数据

Ⅵ VB与FTP编程

Option ExplicitPrivate Const INTERNET_OPEN_TYPE_DIRECT = 1Private Const scuseragent = "vb wininet"Private Const INTERNET_FLAG_PASSIVE = &H8000000'调用设置环境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 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 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 BooleanPrivate 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 BooleanPrivate Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As IntegerDim hOpen As LongDim hConnection As Long'上传文件模块Public Function UpLoadFile(IP As String, FileName As String, UserName As String, PassWord As String) As Boolean Dim ShortName As String Dim ret As Boolean ShortName = GetShortName(FileName) hOpen = TestServer If hOpen <> 0 Then hConnection = InterConnection(IP, UserName, PassWord) If hConnection <> 0 Then ret = FtpPutFile(hConnection, FileName, ShortName, 2, 0) UpLoadFile = ret Else UpLoadFile = False End If Else UpLoadFile = False End If InternetCloseHandle hConnection InternetCloseHandle hOpenEnd Function'FTP下载文件Public Function DownLoadFile(IP As String, FileName As String, LocalFileName As String, UserName As String, PassWord As String) Dim ret As Boolean hOpen = TestServer If hOpen <> 0 Then hConnection = InterConnection(IP, UserName, PassWord) If hConnection <> 0 Then ret = FtpGetFile(hConnection, FileName, LocalFileName, 0, 0, 1, 0) DownLoadFile = ret Else DownLoadFile = False End If Else DownLoadFile = False End If InternetCloseHandle hConnection InternetCloseHandle hOpenEnd Function'调用设置环境Private Function TestServer() As Long Dim i As Long' i = InternetOpen(scuseragent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) i = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) TestServer = iEnd Function'连接服务器Private Function InterConnection(IP As String, UserName As String, PassWord As String) As Long Dim i As Long i = InternetConnect(hOpen, IP, 0, UserName, PassWord, 1, INTERNET_FLAG_PASSIVE, 0) InterConnection = iEnd Function'得到文件的短文件名Private Function GetShortName(FileName As String) As String Dim stemp() As String stemp = Split(FileName, "\") If UBound(stemp) > 0 Then GetShortName = stemp(UBound(stemp)) Else GetShortName = "" End IfEnd Function

Ⅶ VB 下载文件后覆盖原文件 急!

URLDownloadToFile本来就是默认文件已存在时即覆盖的。如果是因为缓存的问题,可以先将缓存的文件删除,再下载文件。因为每次用URLDownloadToFile下载文件时,都会将文件缓存到系统的缓存目录中。Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _ Alias "DeleteUrlCacheEntryA" _ (ByVal lpszUrlName As String) As Long'在下载的代码之前,先执行删除缓存操作。Call DeleteUrlCacheEntry("http://www..com/123.txt")

Ⅷ VB API下载文件问题

稍加改动就可获得下载文件的大小和文件的名称。模块1.调用 方法:dim s as Booleans = DownloadToFile(地址,保存文件路径名称)如果变量s = true 则成功。Option ExplicitPrivate Declare Function StrFormatByteSize Lib "shlwapi" Alias _"StrFormatByteSizeA" (ByVal dw As Long, ByVal pszBuf As String, ByRef _cchBuf As Long) As StringPrivate 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 LongPrivate Declare Function InternetOpenUrl Lib "wininet.dll" _Alias "InternetOpenUrlA" (ByVal hOpen As Long, _ByVal sUrl As String, ByVal sHeaders As String, _ByVal lLength As Long, ByVal lFlags As Long, _ByVal lContext As Long) As LongPrivate Declare Function HttpOpenRequest Lib "wininet.dll" _Alias "HttpOpenRequestA" _(ByVal hInternetSession As Long, _ByVal lpszVerb As String, _ByVal lpszObjectName As String, _ByVal lpszVersion As String, _ByVal lpszReferer As String, _ByVal lpszAcceptTypes As Long, _ByVal dwFlags As Long, _ByVal dwContext As Long) As LongPrivate Declare Function InternetConnect Lib "wininet.dll" _Alias "InternetConnectA" _(ByVal hInternetSession As Long, _ByVal lpszServerName As String, _ByVal nProxyPort As Integer, _ByVal lpszUsername As String, _ByVal lpszPassword As String, _ByVal dwService As Long, _ByVal dwFlags As Long, _ByVal dwContext As Long) As LongPrivate Declare Function HttpSendRequest Lib "wininet.dll" _Alias "HttpSendRequestA" _(ByVal hHttpRequest As Long, _ByVal sHeaders As String, _ByVal lHeadersLength As Long, _ByVal sOptional As String, _ByVal lOptionalLength As Long) As BooleanPrivate Declare Function InternetReadFile Lib "wininet.dll" _(ByVal hFile As Long, ByRef sBuffer As Byte, _ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) _As IntegerPrivate Declare Function InternetCloseHandle Lib "wininet.dll" _(ByVal hInet As Long) As IntegerPrivate Declare Function GetLastError Lib "kernel32" () As LongPrivate bolStop As BooleanPublic Function DownloadToFile(ByVal sUrl As String, ByVal strFile As String) As BooleanOn Error Resume NextDim s As StringDim hOpen As LongDim hOpenUrl As LongDim bDoLoop As BooleanDim bRet As BooleanDim intFH As IntegerDim sReadBuffer() As ByteDim lNumberOfBytesRead As LongDim lCount As LongConst INTERNET_OPEN_TYPE_PRECONFIG = 0Const INTERNET_OPEN_TYPE_DIRECT = 1Const INTERNET_OPEN_TYPE_PROXY = 3Const scUserAgent = "VB OpenUrl"Const INTERNET_FLAG_RELOAD = &H80000000hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)lCount = 0If hOpen <> 0 And hOpenUrl <> 0 ThenintFH = FreeFile Open strFile For Binary As #intFHDo While True ReDim sReadBuffer(2048) bRet = InternetReadFile(hOpenUrl, sReadBuffer(0), 2048, lNumberOfBytesRead) If lNumberOfBytesRead > 0 And bRet = True Then ReDim Preserve sReadBuffer(0 To lNumberOfBytesRead – 1) Put #intFH, , sReadBuffer Else Exit Do End If bolStop = False DoEvents If bolStop = True Then Exit DoLoop Close #intFH DownloadToFile = True Else DownloadToFile = FalseEnd IfIf hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)If hOpen <> 0 Then InternetCloseHandle (hOpen)If hOpen = 0 Or hOpenUrl = 0 Then DownloadToFile = FalseEnd Function

Ⅸ \vb 中怎么样利用api函数从远程ftp上下载或者复制文件夹

Option ExplicitPublic 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 LongPublic 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 LongPublic 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 BooleanPublic 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 BooleanPublic Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" _(ByVal hFtpSession As Long, ByVal lpszFileName As String) As BooleanPublic Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" _(ByVal hFtpSession As Long, ByVal lpszExsiting As String, ByVal lpszNew As String) As BooleanPublic Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As IntegerPublic 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 LongPublic Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _(ByVal hFind As Long, lpvFndData As WIN32_FIND_DATA) As LongPublic Type FILETIMEdwLowDateTime As LongdwHighDateTime As LongEnd TypePublic Type WIN32_FIND_DATAdwFilAttributes As LongftCreationTime As FILETIMEftLastAccessTime As FILETIMEftLastWriteTime As FILETIMEnFileSizeHigh As LongnFileSizeLow As LongdwReserved0 As LongdwReserved1 As LongcFileName As String * 260cAlternate As String * 14End TypePublic Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As LongType OPENFILENAMElStructSize As LonghwndOwner As LonghInstance As LonglpstrFilter As StringlpstrCustomFilter As StringnMaxCustFilter As LongnFilterIndex As LonglpstrFile As StringnMaxFile As LonglpstrFileTitle As StringnMaxFileTitle As LonglpstrInitialDir As StringlpstrTitle As Stringflags As LongnFileOffset As IntegernFileExtension As IntegerlpstrDefExt As StringlCustData As LonglpfnHook As LonglpTemplateName As StringEnd TypePrivate Sub Command1_Click()lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _vbNullString, vbNullString, 0&)If lnginet Thenlnginetconn = InternetConnect(lnginet, "ip地址", 0, _"用户名", "密码", 1, 0, 0)If lnginetconn ThenblnRC = FtpGetFile(lnginetconn, "website/address.asp", "c:\address.asp", 0, 0, 1, 0)If blnRC ThenMsgBox "download ok!!!"End IfInternetCloseHandle lnginetconnInternetCloseHandle lnginetMsgBox "close ok!!!"ElseMsgBox "can't connect"End IfElseMsgBox "ftp wrong"End IfEnd SubPrivate Sub Command2_Click()Dim pData As WIN32_FIND_DATADim lngHINet As LongDim intError As IntegerDim strTemp As StringDim blnRC As BooleanpData.cFileName = String(260, 0)lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _vbNullString, vbNullString, 0&)If lnginet Thenlnginetconn = InternetConnect(lnginet, "IP地址", 0, _"用户名", "密码", 1, 0, 0)If lnginetconn ThenlngHINet = FtpFindFirstFile(lnginetconn, "*.*", pData, 0, 0)strTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) – 1)DopData.cFileName = String(260, 0)blnRC = InternetFindNextFile(lngHINet, pData)If Not blnRC ThenExit DoElsestrTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) – 1)End IfLoopText1.Text = strTempEnd IfEnd IfInternetCloseHandle lngHINetInternetCloseHandle lnginetconnInternetCloseHandle lnginetEnd Sub

Ⅹ VB6.0下下载FTP上指定文件的文件的模块,或类,或dll

FTP操作模块

'文件下载示版例:权 Private Sub Form_Load() Dim FTP As FTP Set FTP = New FTP Call FTP.Connect("127.0.0.1", 21, "username", "password") Call FTP.GetFile("/wwwroot/index.asp", "c:abcd.asp") Set FTP = Nothing End Sub