`
qzriso
  • 浏览: 236445 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

VB.NET中使用FTP下载文件的两种方法

    博客分类:
  • c#
阅读更多

.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(intinet)
                Else
                    Console.WriteLine("can't connect!")
                    Console.ReadLine()
                End If

            Else
                Console.WriteLine("ftp wrong!")
                Console.ReadLine()
            End If
        Catch ex As Exception
            Console.WriteLine(ex.Message)
            Console.ReadLine()
        End Try

    End Sub

分享到:
评论

相关推荐

    asp.net知识库

    实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP...

    金锋文件下载控件

    金锋文件下载控件同时支持HTTP、FTP两种协议,支持断点续传、网址重定向、Cookie、代理服务器等功能。可以输出文件下载日志,可以自定义客户瑞标识、提交方来源、服务器主机名等。而且可以非常方便的利用该控件制作...

    vb访问局域网数据库

    当前,有许多构造模块可以帮助用户创建名为超客户端(rich client)的internet应用, 其中包括visual basic(以下简称vb)的activex控件集合。它们可以提供smtp和pop邮件服务、ftp、newsgroup和...本文向大家介绍这两种方法。

    Asp.net 2.0高级编程(pdf)

    内容代码,使用VB.net和C# 两种解释 &lt;br&gt;第1章ASP.NET2.0概述 1 1.1简史 1 1.2ASP.NET2.0的目标 2 1.2.1开发人员的效率 3 1.2.2管理 5 1.2.3性能和可伸缩性 8 1.3ASP.NET2.0的其他新特性 8 ...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    vBulletin v3.0.7 简体中文标准版

    中文搜索完美解决 3.4 版本 (可以在改进的二元分割算法(效率高)和直接搜索 post 表(更准确)两种方式选择) 4 .+8的时区改为“北京时间” 5 .英文官方模板修正,修复了很多中文词语换行显示错误 安装...

    java源码包4

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    java源码包3

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

Global site tag (gtag.js) - Google Analytics