UN3L5——FTP下载文件
使用FTP下载文件关键点
- 通信凭证:进行Ftp连接操作时需要的账号密码
- 操作命令:
WebRequestMethods.Ftp
,设置你想要进行的Ftp操作
- 文件流相关
FileStream
和 Stream
,上传和下载时都会使用的文件流,下载文件流使用FtpWebResponse
类获取
- 保证FTP服务器已经开启,并且能够正常访问
FTP下载
C#已经把Ftp相关操作封装的很好了,我们只需要熟悉API,直接使用他们进行FTP下载即可
我们主要做的操作是:把下载文件的FTP流读出字节数据写入到本地文件流中
下载前,通过FtpWebRequest.Create()
传入的参数决定要下载什么文件,下载的文件名一定要是资源服务器上有的
然后对必要的属性进行设置,例如凭证,是否保持连接,操作类型,是否使用二进制传输数据等
然后使用ftpWebRequest.GetResponse()
来获取下载相关的响应FtpWebResponse
,
再通过ftpWebResponse.GetResponseStream()
获取下载数据所用的流
再创建文件流,文件的路径决定了下载位置和下载得到的文件名,
然后通过字节数组一点一点从下载流获取数据,再写入到文件流内,
循环执行以上步骤,直到下载流获取不到新数据,下载就结束了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| void Start() { try { FtpWebRequest request = FtpWebRequest.Create(new Uri("ftp://192.168.1.103/下载测试.png")) as FtpWebRequest; request.Credentials = new NetworkCredential("MrTang", "MrTang123"); request.Proxy = null; request.KeepAlive = false; request.Method = WebRequestMethods.Ftp.DownloadFile; request.UseBinary = true; FtpWebResponse response = request.GetResponse() as FtpWebResponse; Stream downLoadStream = response.GetResponseStream(); using (FileStream fileStream = File.Create(Application.persistentDataPath + "/DownLoadTest.png")) { byte[] bytes = new byte[1024]; int contentLength = downLoadStream.Read(bytes, 0, bytes.Length); while (contentLength != 0) { fileStream.Write(bytes, 0, contentLength); contentLength = downLoadStream.Read(bytes, 0, bytes.Length); } downLoadStream.Close(); fileStream.Close(); } response.Close(); print("下载结束!" + Application.persistentDataPath + "/DownLoadTest.png"); } catch (Exception e) { print("下载出错!" + e.Message); } }
|