.net下载ftp文件

/*首先从配置文件读取ftp的登录信息*/
 string TempFolderPath = System.Configuration.ConfigurationManager.AppSettings["TempFolderPath"].ToString();
 string FtpUserName = System.Configuration.ConfigurationManager.AppSettings["FtpUserName"].ToString();
 string FtpPassWord = System.Configuration.ConfigurationManager.AppSettings["FtpPassWord"].ToString();
 string LocalFileExistsOperation = System.Configuration.ConfigurationManager.AppSettings["LocalFileExistsOperation"].ToString();
 

Uri uri = new Uri(FtpPath);
string FileName = Path.GetFullPath(TempFolderPath) + Path.DirectorySeparatorChar.ToString() +  Path.GetFileName(uri.LocalPath); 

//创建一个文件流
            FileStream fs = null;
            Stream responseStream = null;
            try
            {
                //创建一个与FTP服务器联系的FtpWebRequest对象
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
                //设置请求的方法是FTP文件下载
                request.Method = WebRequestMethods.Ftp.DownloadFile;

                //连接登录FTP服务器
                request.Credentials = new NetworkCredential(FtpUserName, FtpPassWord);

                //获取一个请求响应对象
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                //获取请求的响应流
                responseStream = response.GetResponseStream();

                //判断本地文件是否存在,如果存在,则打开和重写本地文件

                if (File.Exists(FileName))               

                {
                      if (LocalFileExistsOperation == "write")

                      {
                              fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite);

                      }
                }

                //判断本地文件是否存在,如果不存在,则创建本地文件
                else             

                {
                        fs = File.Create(FileName);
                }

                if (fs != null)
                {

                    int buffer_count = 65536;
                    byte[] buffer = new byte[buffer_count];
                    int size = 0;
                    while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0)
                    {
                        fs.Write(buffer, 0, size);

                    }
                    fs.Flush();
                    fs.Close();
                    responseStream.Close();
                }

            }
            finally
            {
                if (fs != null)
                    fs.Close();
                if (responseStream != null)
                    responseStream.Close();
            }

 

 如果遇到服务器端下载路径包含汉字的话,就在配置文件web.config中的<system.web>节点下添加:
  <globalization   requestEncoding="GB2312"   responseEncoding="GB2312"   uiCulture="zh-CN"     culture="zh-CN"   fileEncoding="GB2312"   />

就可以解决了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在VB.NET中查询FTP文件是否存在,可以使用WebClient类来实现。 首先,需要设置FTP服务器的地址、用户名和密码等参数: ```vb.net Dim serverUri As String = "ftp://ftp.example.com" Dim userName As String = "username" Dim password As String = "password" ``` 然后,创建一个WebClient对象,设置其凭据为FTP服务器的用户名和密码,并指定FTP服务器上需要查询的文件路径: ```vb.net Dim ftpClient As New WebClient() ftpClient.Credentials = New NetworkCredential(userName, password) Dim filePath As String = "/path/to/file.txt" Dim uri As New Uri(serverUri & filePath) ``` 接着,可以使用WebClient对象的FTP协议相关方法检查文件是否存在: ```vb.net ' 通过请求获取文件大小,判断文件是否存在 Try Dim fileSize As Long = ftpClient.GetFileSize(uri) Console.WriteLine("文件已存在,大小: " & fileSize) Catch ex As WebException Console.WriteLine("文件不存在:" & ex.Message) End Try ' 或者直接通过请求判断文件是否存在 Try Dim response As String = ftpClient.GetResponse(uri) Console.WriteLine("文件已存在") Catch ex As WebException Console.WriteLine("文件不存在:" & ex.Message) End Try ``` 以上代码示例中,通过WebClient对象的GetFileSize方法获取FTP文件的大小,如果返回值大于0,则说明文件存在;否则,会抛出WebException异常,提示文件不存在。 另外一种判断文件是否存在的方法,是直接使用WebClient对象的GetResponse方法。如果FTP文件存在,则会返回一个WebResponse对象;否则,同样会抛出WebException异常。 总之,在VB.NET中查询FTP文件是否存在,需要使用WebClient类的FTP协议相关方法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值