【12】FtpWebRequest上传下载

下载文件

 1 /// <summary>
 2 /// 下载文件
 3 /// </summary>
 4 /// <param name="filename"></param>
 5 private static void DownLoadFile(string filename)
 6 {
 7     FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + FtpAddress + "/" + filename);
 8     req.Method = WebRequestMethods.Ftp.DownloadFile;
 9     req.UseBinary = true;
10     req.UsePassive = true;
11     req.Credentials = new NetworkCredential(FtpUid, FtpPwd);
12     try
13     {
14         using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
15         {
16             string localfile = Path.Combine(LocalPath, filename);
17             FileStream fs = new FileStream(localfile, FileMode.Create, FileAccess.Write);
18             int buffer = 1024;  //1K缓冲
19             byte[] b = new byte[buffer];
20             int i = 0;
21             Stream stream = res.GetResponseStream();
22             while ((i = stream.Read(b, 0, buffer)) > 0)
23             {
24                 fs.Write(b, 0, i);
25             }
26         }
27         Console.WriteLine(filename + " download!");
28         Log(filename + "下载成功");
29
30     }
31     catch (Exception ex)
32     {
33         Console.WriteLine(ex.ToString());
34         Log(ex.ToString());
35     }
36     finally
37     {
38
39     }
40 }  

获取文件列表

 1 /// <summary>
 2 /// 获取FTP文件列表
 3 /// </summary>
 4 /// <returns></returns>
 5 private static List<String> GetFileList()
 6 {
 7     List<string> list = new List<string>();
 8     FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri("ftp://" + FtpAddress + FtpRemotePath));
 9     req.Credentials = new NetworkCredential(FtpUid, FtpPwd);
10     req.Method = WebRequestMethods.Ftp.ListDirectory;
11     req.UseBinary = true;
12     req.UsePassive = true;
13     try
14     {
15         using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
16         {
17             using (StreamReader sr = new StreamReader(res.GetResponseStream()))
18             {
19                 string s;
20                 while ((s = sr.ReadLine()) != null)
21                 {
22
23                     list.Add(s);
24                 }
25             }
26         }
27     }
28     catch (Exception ex)
29     {
30         Console.WriteLine(ex.ToString());
31         Log("下载文件列表失败:");
32         Log(ex.ToString());
33     }
34     return list;
35
36 }  

上传文件

 1 private static void UploadFile(string localFile)
 2 {
 3     FileInfo fi = new FileInfo(localFile);
 4     FileStream fs = fi.OpenRead();
 5     long length = fs.Length;
 6     FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + FtpAddress + FtpRemotePath + fi.Name);
 7     req.Credentials = new NetworkCredential(FtpUid, FtpPwd);
 8     req.Method = WebRequestMethods.Ftp.UploadFile;
 9     req.UseBinary = true;
10     req.ContentLength = length;
11     req.Timeout = 10 * 1000;
12     try
13     {
14         Stream stream = req.GetRequestStream();
15
16         int BufferLength = 2048; //2K
17         byte[] b = new byte[BufferLength];
18         int i;
19         while ((i = fs.Read(b, 0, BufferLength)) > 0)
20         {
21             stream.Write(b, 0, i);
22         }
23         stream.Close();
24         stream.Dispose();
25
26     }
27     catch (Exception ex)
28     {
29         Console.WriteLine(ex.ToString());
30     }
31
32 }  
时间: 2024-10-10 10:45:32

【12】FtpWebRequest上传下载的相关文章

winform通过FTP协议上传下载文件

上传文件:窗体代码 一次上传多个文件(grdAffixFilesList中需要上传的) private Boolean UploadFile() { string filename; int upCount=0; for (int i = 0; i < this.grdAffixFilesList.Rows.Count; i++) { filename = this.grdAffixFilesList.Rows[i].Cells["FILEPATH"].Text.ToString

Hadoop之HDFS原理及文件上传下载源码分析(上)

HDFS原理 首先说明下,hadoop的各种搭建方式不再介绍,相信各位玩hadoop的同学随便都能搭出来. 楼主的环境: 操作系统:Ubuntu 15.10 hadoop版本:2.7.3 HA:否(随便搭了个伪分布式) 文件上传 下图描述了Client向HDFS上传一个200M大小的日志文件的大致过程: 首先,Client发起文件上传请求,即通过RPC与NameNode建立通讯. NameNode与各DataNode使用心跳机制来获取DataNode信息.NameNode收到Client请求后,

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

Hadoop之HDFS原理及文件上传下载源码分析(下)

上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信.本篇将继续介绍hdfs文件上传.下载源解析. 文件上传 先上文件上传的方法调用过程时序图: 其主要执行过程: FileSystem初始化,Client拿到NameNodeRpcServer代理对象,建立与NameNode的RPC通信(楼主上篇已经介绍过了) 调用FileSystem的create()方法,由于实现类为Dis

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

linux上很方便的上传下载文件工具rz和sz使用介绍

简单说就是,可以很方便地用这两个sz/rz工具,实现Linux下和Windows之间的文件传输(发送和接收),速度大概为10KB/s,适合中小文件.rz/sz 通过Zmodem协议传输数据 一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地: 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件

开源项目OkHttpPlus——支持GET、POST、UI线程回调、JSON格式解析、链式调用、文件上传下载

OkHttpPlus介绍 项目地址:https://github.com/ZhaoKaiQiang/OkHttpPlus 主要功能:OkHttp封装,支持GET.POST.UI线程回调.JSON格式解析.链式调用.小文件上传下载及进度监听等功能 为什么要写这么一个库呢? 首先,是因为OkHttp在4.4之后已经作为底层的Http实现了,所以OkHttp这个库很强大,值得我们学习. 其次,在我看来,OkHttp使用起来不如Volley方便,OkHttp的回调都是在工作线程,所以如果在回调里面操作V

【JavaWeb】参考大神重新写的上传下载

自学java,选择从简单的javaweb入手了. 读了网上某位大神的细致文章,了解后自己写了这篇上传下载的,加上了自己一部分的理解注释. 算是入门篇吧.大致完成了任务,比较粗糙. fileHanderServlet.java (文件上传处理) 1 package up.file.Servletfile; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 i

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs