FtpWebRequest上传、下载文件

接到一个任务,该任务需要从数据支持部的FTP上下载4个文件。
数据支持部的同事给了4个工具分别用下来载这4个文件
因为每天要定时下载,所以加入了计划任务。
这样一来,本可以做为一个任务来完成的东东却硬被分成了4个任务,
这还不是大问题,最大的问题是如果要下载的文件名规则有了变化,我就要分别改这4个工具的配置文件。
这4个工具虽能满足要求,但有点烦琐。看来还是不能偷懒了 - -
自己用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.         }  
/// <summary>
/// 下载文件
/// </summary>
/// <param name="filename"></param>
private static void DownLoadFile(string filename)
{
FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + FtpAddress + "/" + filename);
req.Method = WebRequestMethods.Ftp.DownloadFile;
req.UseBinary = true;
req.UsePassive = true;
req.Credentials = new NetworkCredential(FtpUid, FtpPwd);
try
{
using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
{
string localfile = Path.Combine(LocalPath, filename);
FileStream fs = new FileStream(localfile, FileMode.Create, FileAccess.Write);
int buffer = 1024;  //1K缓冲
byte[] b = new byte[buffer];
int i = 0;
Stream stream = res.GetResponseStream();
while ((i = stream.Read(b, 0, buffer)) > 0)
{
fs.Write(b, 0, i);
}
}
Console.WriteLine(filename + " download!");
Log(filename + "下载成功");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Log(ex.ToString());
}
finally
{
}
}


获取文件列表
  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.         }  
/// <summary>
/// 获取FTP文件列表
/// </summary>
/// <returns></returns>
private static List<String> GetFileList()
{
List<string> list = new List<string>();
FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri("ftp://" + FtpAddress + FtpRemotePath));
req.Credentials = new NetworkCredential(FtpUid, FtpPwd);
req.Method = WebRequestMethods.Ftp.ListDirectory;
req.UseBinary = true;
req.UsePassive = true;
try
{
using (FtpWebResponse res = (FtpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
string s;
while ((s = sr.ReadLine()) != null)
{
list.Add(s);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Log("下载文件列表失败:");
Log(ex.ToString());
}
return list;
}


上传文件
  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.         }  

转载于:https://www.cnblogs.com/Dot-Boy/archive/2008/11/11/1331273.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值