VB.Net实现Ftp下载的方法
2009-02-09 10:56
344 查看
方法一: 使用Ftp.exe ,通过process类来调用它。
Imports System.Diagnostics
...
Public Sub GetFileByCallFtp()
'定义ProcessStartInfo,Process的启动信息。
Dim psi As New ProcessStartInfo
'ftp.exe的路径最好放到配置文件里。
psi.FileName = "C:/WINNT/system32/ftp.exe"
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
'该值指示不使用操作系统Shell程序启动进程。
psi.UseShellExecute = False
'命令集文件名.注意,路径中不能有空格.
Dim fileName As String = "C/ftp.txt"
'-s:FileName表示,从文件中读取控制命令
psi.Arguments = "-s:" + fileName
Dim proc As Process
proc = Process.Start(psi)
'等待进程完成任务
proc.WaitForExit()
'在控制台输出结果
Console.WriteLine(proc.StandardOutput)
Console.ReadLine()
End Sub
方法二,使用win32 api —— wininet.dll
首先是,api声明:
因为此测试程序,是VB.NET ConsoleApplication所以,api声明写在Module里,
方法是静态的。所以没加Shared关键字, 这一点请大家注意。
<DllImport("wininet")> _
Public Function InternetOpen(ByVal sAgent As String, ByVal LAccessType As Integer, ByVal sProxyName As String, _
ByVal SProxyBypass As String, ByVal lFlags As Integer) As Integer
End Function
<DllImport("wininet")> _
Public Function InternetConnect(ByVal hInternetSession As Integer, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Integer, _
ByVal lFlags As Integer, ByVal lContext As Integer) As Integer
End Function
<DllImport("wininet")> _
Public Function FtpGetFile(ByVal hFtpSession As Integer, ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _
ByVal dwFlagsAndAttributes As Integer, ByVal dwFlags As Integer, _
ByVal dwContext As Integer) As Boolean
End Function
<DllImport("wininet")> _
Public Function InternetCloseHandle(ByVal hInet As Integer) As Integer
End Function
调用:
Public Sub GetFileByCallWininetDLL()
Try
Dim intinet As Integer = InternetOpen(Nothing, 0, Nothing, Nothing, 0)
If intinet > 0 Then
'参数:intinet的session值,ftp地址,端口,用户名,密码,lService, lFlags,lContext
Dim intinetconn As Integer = InternetConnect(intinet, "192.168.110.152", 0, "tokiwa", "tokiwa", 1, 0, 0)
If intinetconn > 0 Then
'下载某个文件到指定文件
Dim ret As Boolean = FtpGetFile(intinetconn, "pagerror.gif", "C:/itest.gif", 0, 0, 1, 0)
If ret Then
Console.WriteLine("ok!")
Console.ReadLine()
End If
InternetCloseHandle(intinetconn)
InternetCloseHandle
Imports System.Diagnostics
...
Public Sub GetFileByCallFtp()
'定义ProcessStartInfo,Process的启动信息。
Dim psi As New ProcessStartInfo
'ftp.exe的路径最好放到配置文件里。
psi.FileName = "C:/WINNT/system32/ftp.exe"
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
'该值指示不使用操作系统Shell程序启动进程。
psi.UseShellExecute = False
'命令集文件名.注意,路径中不能有空格.
Dim fileName As String = "C/ftp.txt"
'-s:FileName表示,从文件中读取控制命令
psi.Arguments = "-s:" + fileName
Dim proc As Process
proc = Process.Start(psi)
'等待进程完成任务
proc.WaitForExit()
'在控制台输出结果
Console.WriteLine(proc.StandardOutput)
Console.ReadLine()
End Sub
方法二,使用win32 api —— wininet.dll
首先是,api声明:
因为此测试程序,是VB.NET ConsoleApplication所以,api声明写在Module里,
方法是静态的。所以没加Shared关键字, 这一点请大家注意。
<DllImport("wininet")> _
Public Function InternetOpen(ByVal sAgent As String, ByVal LAccessType As Integer, ByVal sProxyName As String, _
ByVal SProxyBypass As String, ByVal lFlags As Integer) As Integer
End Function
<DllImport("wininet")> _
Public Function InternetConnect(ByVal hInternetSession As Integer, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Integer, _
ByVal lFlags As Integer, ByVal lContext As Integer) As Integer
End Function
<DllImport("wininet")> _
Public Function FtpGetFile(ByVal hFtpSession As Integer, ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _
ByVal dwFlagsAndAttributes As Integer, ByVal dwFlags As Integer, _
ByVal dwContext As Integer) As Boolean
End Function
<DllImport("wininet")> _
Public Function InternetCloseHandle(ByVal hInet As Integer) As Integer
End Function
调用:
Public Sub GetFileByCallWininetDLL()
Try
Dim intinet As Integer = InternetOpen(Nothing, 0, Nothing, Nothing, 0)
If intinet > 0 Then
'参数:intinet的session值,ftp地址,端口,用户名,密码,lService, lFlags,lContext
Dim intinetconn As Integer = InternetConnect(intinet, "192.168.110.152", 0, "tokiwa", "tokiwa", 1, 0, 0)
If intinetconn > 0 Then
'下载某个文件到指定文件
Dim ret As Boolean = FtpGetFile(intinetconn, "pagerror.gif", "C:/itest.gif", 0, 0, 1, 0)
If ret Then
Console.WriteLine("ok!")
Console.ReadLine()
End If
InternetCloseHandle(intinetconn)
InternetCloseHandle
相关文章推荐
- VB.Net实现Ftp下载的方法
- VB.NET中使用FTP下载文件的两种方法
- VB.NET中使用FTP下载文件的两种方法。
- VB.Net实现Ftp上传的方法
- VB.Net实现登陆Ftp的方法[乐博网原创]
- VB.NET中使用FTP下载文件的两种方法。
- VB.NET中使用FTP下载文件的两种方法
- VB.NET中使用FTP下载文件的两种方法
- asp.net生成Excel并导出下载的实现方法
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
- qt5集成libcurl实现tftp和ftp的方法之四:实现ftp文件上传和下载
- asp.net生成Excel并导出下载五种实现方法
- 用vb实现ftp的上传下载
- [Android中级]使用Commons-net-ftp来实现FTP上传、下载的功能
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(异步上传,下载等)实现汇总2
- VB.Net实现打印机纸张类型自动更换的方法
- asp.net C#实现下载文件的六种方法实例
- 利用org.apache.commons.net.ftp实现ftp下载,解决中文文件名乱码问题
- [Android中级]使用Commons-net-ftp来实现FTP上传、下载的功能