vb.net 使用ftp协议上传、下载文件(Visual Studio 2019)
ftp传输是一种文件传输协议,在很多时候,可以提供数据传输功能。
软件工具:visual studio 2019
win10系统
打开visual studio 2019,新建一个窗体项目。
从ftp服务器下载文件:
Dim req As FtpWebRequest = CType(WebRequest.Create("ftp://192.168.1.102/" + TextBox1.Text + ".txt"), FtpWebRequest)req.Method = WebRequestMethods.Ftp.DownloadFilereq.Credentials = New NetworkCredential("ftp服务器所在用户名", "用户密码")Dim res As FtpWebResponse = CType(req.GetResponse(), FtpWebResponse)Dim resstr As Stream = res.GetResponseStream()Dim rd As StreamReader = New StreamReader(resstr)'Console.WriteLine(rd.ReadToEnd())'Console.WriteLine($"download finish,status{res.StatusDescription }")Dim myStream As StreamDim saveFileDialog1 As New SaveFileDialog()Dim byt As Byte()byt = Encoding.UTF8.GetBytes(rd.ReadToEnd())saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"saveFileDialog1.FilterIndex = 2saveFileDialog1.DefaultExt = ".txt"saveFileDialog1.RestoreDirectory = TrueIf saveFileDialog1.ShowDialog() = DialogResult.OK ThenmyStream = saveFileDialog1.OpenFile()If (myStream IsNot Nothing) ThenmyStream.Write(byt, 0, byt.Length) '将下载的数据流的数据写入到文件并保存到本地myStream.Close()End IfEnd Ifrd.Close()res.Close()
上面的程序包含了下载文件及存储到本地文件,使用了vb.net的savefiledialog控件。
下载的文件名可以自己定义,在textbox1中体现。前提是知道ftp服务器中有哪些文件,可以使用目录读取功能:
Dim req As FtpWebRequest = CType(WebRequest.Create("ftp://192.168.1.102/"), FtpWebRequest)req.Method = WebRequestMethods.Ftp.ListDirectoryDetailsreq.Credentials = New NetworkCredential("ftp服务器用户名", "ftp服务器密码")Dim res As FtpWebResponse = CType(req.GetResponse(), FtpWebResponse)Dim resstr As Stream = res.GetResponseStream()Dim rd As StreamReader = New StreamReader(resstr)Dim rtext As StringDim rts As String()rtext = rd.ReadToEnd()rts = rtext.Split({" "}, StringSplitOptions.None)' Dim rts1(rts.Length) As String' Dim rts2(rts.Length) As Integerrtb2.Clear()rtb2.AppendText(rtext + vbCrLf)
将读取的目录显示在超级文本richtext1中。
也可以从本地文件夹中将文档上传到ftp服务器中。
Dim req As FtpWebRequest = CType(WebRequest.Create(uri), FtpWebRequest)req.Method = WebRequestMethods.Ftp.UploadFilereq.Credentials = New NetworkCredential("ftp服务器用户名", "ftp服务器用户密码")Dim filec As Byte()Using sources As StreamReader = New StreamReader(fp)filec = Encoding.UTF8.GetBytes(sources.ReadToEnd())End Usingreq.ContentLength = filec.LengthUsing ress As Stream = req.GetRequestStream()ress.Write(filec, 0, filec.Length)End UsingUsing res As FtpWebResponse = CType(req.GetResponse(), FtpWebResponse)Console.WriteLine($"upload file finish,status{res.StatusDescription }")End Using
当然,在上传文档时,可以先选择文档,可以使用vb.net的openfiledialog控件,
Dim fps As String()If OpenFileDialog1.ShowDialog = DialogResult.OK Thenfp = OpenFileDialog1.FileNameEnd Iffps = fp.Split({"\"}, StringSplitOptions.None)uri = "ftp://192.168.1.102/" + fps(4)Label2.Text = uri
完整程序:
Imports System.NetImports System.Text
Imports System.IOPublic Class Form1Dim uri As StringDim fp As StringPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadEnd SubPrivate Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.ClickDim req As FtpWebRequest = CType(WebRequest.Create("ftp://192.168.1.102/" + TextBox1.Text + ".txt"), FtpWebRequest)req.Method = WebRequestMethods.Ftp.DownloadFilereq.Credentials = New NetworkCredential("rongjv", "helanyinxue1990")Dim res As FtpWebResponse = CType(req.GetResponse(), FtpWebResponse)Dim resstr As Stream = res.GetResponseStream()Dim rd As StreamReader = New StreamReader(resstr)'Console.WriteLine(rd.ReadToEnd())'Console.WriteLine($"download finish,status{res.StatusDescription }")Dim myStream As StreamDim saveFileDialog1 As New SaveFileDialog()Dim byt As Byte()byt = Encoding.UTF8.GetBytes(rd.ReadToEnd())saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"saveFileDialog1.FilterIndex = 2saveFileDialog1.DefaultExt = ".txt"saveFileDialog1.RestoreDirectory = TrueIf saveFileDialog1.ShowDialog() = DialogResult.OK ThenmyStream = saveFileDialog1.OpenFile()If (myStream IsNot Nothing) ThenmyStream.Write(byt, 0, byt.Length) '将下载的数据流的数据写入到文件并保存到本地myStream.Close()End IfEnd Ifrd.Close()res.Close()End SubPrivate Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.ClickDim req As FtpWebRequest = CType(WebRequest.Create(uri), FtpWebRequest)req.Method = WebRequestMethods.Ftp.UploadFilereq.Credentials = New NetworkCredential("rongjv", "helanyinxue1990")Dim filec As Byte()Using sources As StreamReader = New StreamReader(fp)filec = Encoding.UTF8.GetBytes(sources.ReadToEnd())End Usingreq.ContentLength = filec.LengthUsing ress As Stream = req.GetRequestStream()ress.Write(filec, 0, filec.Length)End UsingUsing res As FtpWebResponse = CType(req.GetResponse(), FtpWebResponse)Console.WriteLine($"upload file finish,status{res.StatusDescription }")End UsingEnd SubPrivate Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.ClickDim fps As String()If OpenFileDialog1.ShowDialog = DialogResult.OK Thenfp = OpenFileDialog1.FileNameEnd Iffps = fp.Split({"\"}, StringSplitOptions.None)uri = "ftp://192.168.1.102/" + fps(4)Label2.Text = uriEnd SubPrivate Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.ClickDim req As FtpWebRequest = CType(WebRequest.Create("ftp://192.168.1.102/"), FtpWebRequest)req.Method = WebRequestMethods.Ftp.ListDirectoryDetailsreq.Credentials = New NetworkCredential("rongjv", "helanyinxue1990")Dim res As FtpWebResponse = CType(req.GetResponse(), FtpWebResponse)Dim resstr As Stream = res.GetResponseStream()Dim rd As StreamReader = New StreamReader(resstr)Dim rtext As StringDim rts As String()rtext = rd.ReadToEnd()rts = rtext.Split({" "}, StringSplitOptions.None)' Dim rts1(rts.Length) As String' Dim rts2(rts.Length) As Integerrtb2.Clear()rtb2.AppendText(rtext + vbCrLf)End Sub
End Class
以上程序是在微软官方示例的基础上,加了些小的改变实现。
实例演示:
vb.net 使用ftp协议上传、下载文件(Visual Studio 2019)相关推荐
- 关于FileZilla连接FTP站点上传下载文件
关于FileZilla连接FTP站点上传下载文件 浏览器搜索FileZilla官网:https://www.filezilla.cn/download 根据自己操作系统安装 安装完成之后的启动界面是这 ...
- 易语言客户端请求http_易语言通过Http协议上传下载文件
易语言通过Http协议上传下载文件 2018-11-29 .版本 2 .程序集 窗口程序集1 .程序集变量 程序集_数据, 字节集 .子程序 _按钮1_被单击 信息框 (客户1.连接 ("b ...
- Linux 终端访问 FTP 及 上传下载 文件
今天同事问我一个问题,在Linux 下访问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上. google 一下. ...
- Linux 终端訪问 FTP 及 上传下载 文件
今天同事问我一个问题,在Linux 下訪问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上. google 一下. ...
- ftp文件推送 linux_Linux 终端访问 FTP 及 上传下载 文件
今天同事问我一个问题,在Linux 下访问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上.google 一下. 方 ...
- Java通过FTP服务器上传下载文件的方法
本文介绍了如何使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作 ...
- linux ftp上传下载文件,Linux下ftp命令上传下载文件
命令行下连接ftp服务器 方式一: 默认端口 ftp hostname 方式二: 指定端口 [ec2-user@ip-99-240-80-144 ~]$ ftp ftp> open 99.240 ...
- linux使用ftp传递文件,linux ftp命令:(从远程ftp服务器上传下载文件)
FTP的命令行格式为: ftp -v -d -i -n -g [主机名] ,其中 -v 显示远程服务器的所有响应信息: -n 限制ftp的自动登录,即不使用:.n etrc文件: -d 使用调试方式: ...
- Perl之 用Net::FTP来上传下载文件
2011-04-23 22:46:49 在Perl中,使用模块Net::FTP来使用FTP服务,一般的使用步骤如下: 使用Net::FTP的new方法来创建一个新的FTP对象. 使用login方法登录 ...
- 通过smb协议上传下载文件到nas
方式一: 需要添加的依赖: <!--共享目录文件下载操作工具包--><dependency><groupId>com.hierynomus</groupId& ...
最新文章
- Django搭建简单的站点
- js 设计模式—工厂模式
- Storm-kafka源码分析之Config相关类
- 生僻字(通信工程版)
- H5 六边形消除游戏开发
- VC++ 读取和保存文件对话框及默认目录
- Java bitset转string_将java BitSet保存到DB
- ssh-keygen实现免密码登陆
- 使用c#对xml文件进行解析 功能演示 161483724
- Linux 探索之旅 | 第五部分第七课:Shell 实现图片展示网页
- 3套看漫画学python视频教程
- R语言ggplot2边框背景去除
- 法拉克机器人自动怎么调_FANUC机器人程序自动启动介绍汇总.ppt
- Linux操作命令分类详解 - 用户权限(三)
- 数值型数据的表示(1.0)
- 通达OA-军工行业系统解决方案
- 自学java,学多久可以找到工作?
- 天猫卖家现在做不下去了,还有后路可走吗?
- Spark 的键值对(pair RDD)操作,Scala实现
- excel 置信区间 计算_如何用excel计算95%的置信区间