| 网站首页 | VB.Net实例分析 | .Net技术文摘 | 下载中心 | VB.Net书籍笔记 | .Net源码 | VBS脚本与组件调用 | Windows2008技术文摘 | 给我们留言 | 
最新公告:

  没有公告

您现在的位置: 乐博网 >> VB.Net应用技巧 >> 技术文摘正文
最新推荐 更多内容
VB.Net实现FTP下载文件的两种方法
VB.Net实现FTP下载文件的两种方法
作者:佚名    来源:乐博网收集     更新时间:2007-11-14

.net没有专门处理FTP的类,我们可以通过调用系统自带的FTP.EXE 或者是调用win32 API中的wininet.dll来完成基本操作。希望以下的代码能为大家抛砖引玉。

方法一: 使用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

  • 上一篇:

  • 下一篇:
  • 【字体: 】【打印此文】【关闭窗口
      相关文章:(只显示最新16条)
    Serv-U密码加密原理并实现( ASP.NET基于C# )
    C#管理Serv-U6.4.0.6的方法
    VB.Net实现FTP编程的学习笔记.04.[乐博网]
    VB.Net实现FTP编程的学习笔记.03.[乐博网]
    VB.Net实现FTP编程的学习笔记.02.[乐博网]
    VB.Net实现FTP编程的学习笔记.01.[乐博网]
    VB.Net实现Ftp上传的方法[乐博网原创]
    VB.Net实现Ftp下载的方法[乐博网原创]
    VB.Net实现登陆Ftp的方法[乐博网原创]

    | 设为首页 | 加入收藏 | 联系站长 | | 友情链接 | 版权申明 |
    乐博网欢迎各种媒体转载我们的原创作品[转载请注明出处];我们鼓励更多VB.Net开发者一起加入研究与探讨;如发现文章访问错误、内容错误或版权疑问、内容有违相关法律(如涉及政治、色情、反动或散布虚假有害信息)等情况,请及时向我们举报,我们将及时纠正!
    联系邮箱:Shiny#vip.qq.com (#替换为@) QQ交流群: 40797788 [闽ICP备05014267号]