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

下载

 
.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

==============================================================================

ftp.txt 里的内容

方法二,使用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

时间: 2024-08-26 10:02:51

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

解析PHP实现下载文件的两种方法

本篇文章是对使用PHP实现下载文件的两种方法进行了详细的分析介绍,需要的朋友参考下   方法一: 复制代码 代码如下:  header('Content-Description: File Transfer');  header('Content-Type: application/octet-stream');  header('Content-Disposition: attachment; filename='.basename($filepath));  header('Content-

解析PHP实现下载文件的两种方法_php技巧

方法一: 复制代码 代码如下:  header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($filepath)); header('Content-Transfer-Encoding: binary'); header('Expires: 0

不用安装软件查看docx文件的两种方法

  docx是Microsoft Word 2007-2010文档的扩展名.若是97-2003版本的Word没有安装兼容包是无法打开docx文件的.为了能够正常打开文档,我们不得不去下载兼容安装包或者安装高版本的微软Office软件.但是有的用户更喜欢使用旧版本,不愿意再安装新的软件.那么有没有不需安装软件就能打开docx文件的方法呢?答案是有的,接下来系统城小编和大家分享的是不用安装软件就能查看docx文件的两种方法. 方法一:使用QQ邮箱在线查看docx文件 1.打开QQ邮箱,点击写信(可写

Flash文件嵌入音频文件的两种方法

核心提示:本文介绍在flash文档中嵌入音频文件的两种方法,使其可以在Flash player中正常播放. 本文介绍在flash文档中嵌入音频文件的两种方法,使其可以在Flash player中正常播放. 1.建立 Sound 对象用 load() 方法加载外部的 MP3 来播放; 2.让 Sound 对象监听 sampleData 事件,这样可以播放由程序动态生成的声音,例如: 下面的示例播放简单的正弦波. 以下是引用片段: var mySound:Sound = new Sound(); f

Excel中制作一个项目文件目录的两种方法

  Excel中制作一个项目文件目录的两种方法.如下图所示,就是一个项目文件夹内的所有文件: 接下来,先提取文件名称. 如果文件比较少,可以直接输入到Excel文档中,但是如果文件比较多,就要想想办法了. 方法一 在工程文件夹内,新建一个记事本文档,输入下面的内容后保存: DIR *.* /B >目录.TXT 将记事本文档的后缀名.txt 修改为.bat 然后双击这个文件,就会得到一个名为"目录"的记事本文件,里面会包含当前文件夹内的所有文件名. 这样就可以将目录中的文档名复制到

win7系统如何打开csv文件|win7系统打开csv文件的两种方法

  win7系统如何打开csv文件|win7系统打开csv文件的两种方法.最近很多网友询问小编win7系统如何打开csv文件?csv文件是什么?CSV格式文件(逗号分隔值)是一种用来存储数据的纯文本文件,通常都是用于存放电子表格或数据的一种文件格式.那么win7系统如何打开csv文件?下面和大家分享下几种常用的CSV文件打开方法. 方法一:用写字板打开csv文件 1.不用任何软件,使用电脑中的写字板来打开csv文件.在电脑桌面,点击左下方的"开始",点击所有程序--附件--写字板; 2

动态加载JavaScript文件的两种方法_javascript技巧

这篇文章主要为大家详细介绍了动态加载JavaScript文件的两种方法,感兴趣的小伙伴们可以参考一下 第一种便是利用ajax方式,把script文件代码从背景加载到前台,而后对加载到的内容经过eval()实施代码.第二种是,动静创建一个script标签,配置其src属性,经过把script标签插入到页面head来加载js,相当于正在head中写了一个<script src="..."></script>,只可是这个script标签是用js动静创建的 比喻说是我们

Android 中Popwindow弹出菜单的两种方法实例

Android 中Popwindow弹出菜单的两种方法实例 1.popWindow就是对话框的一种方式! 此文讲解的android中对话框的一种使用方式,它叫popWindow. 2.popWindow的特性 Android的对话框有两种:PopupWindow和AlertDialog.它们的不同点在于: AlertDialog的位置固定,而PopupWindow的位置可以随意. AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的. PopupWindow的位置按照有无偏

Excel中常见的拆分单元格两种方法

  下图中的表头就是已经合并了四个单元格的一个大单元格,本教程需要讲述的就是如何将这个大的单元格拆分成原有的四个小单元格.下面请看小编图文详解Excel中常见的拆分单元格两种方法. 拆分单元格方法一 选中要拆分的大单元格,切换到"开始"选项卡,在"对齐方式"组中单击"合并后居中"按钮.这个按钮之前是选中状态,单击之后,就取消选中了,达到了拆分的效果. 拆分单元格方法二 1.选中要合并的单元格,单击鼠标右键,在弹出的快捷菜单中选择"设置单