从FTP上下载文件到本地

#region 下载文件
        /// <summary>
        /// 从FTP服务器下载文件,指定本地路径和本地文件名,20120817,ylh
        /// </summary>
        ///  <param name="ftpPath">要下载文件所在ftp上的完整路径,如ftp://192.168.0.111/2012-08-17/yinluhui.xml</param>
        /// <param name="ftpFile">要下载文件的文件名,如yinluhui.xml</param>
        /// <param name="LocalPath">本地路径,如D:\ftp临时文件\20120817</param>
        public bool DownFtpToLocation(String ftpPath, String ftpFile, String LocalPath)
        {
            byte[] bt = null;
            try
            {
                //if (!IsValidFileChars(RemoteFileName) || !IsValidFileChars(LocalFileName) || !IsValidPathChars(LocalPath))
                //{
                //    throw new Exception("非法文件名或目录名!");
                //}
                if (Directory.Exists(LocalPath) == false)
                {
                    Directory.CreateDirectory(LocalPath);
                }
                string LocalFullPath = Path.Combine(LocalPath, ftpFile);
                //if (File.Exists(LocalFullPath))
                //{
                //    throw new Exception("当前路径下已经存在同名文件!");
                //}
                bt = DownloadFile(ftpPath, LocalPath);
                if (bt != null)
                {
                    FileStream stream = new FileStream(LocalFullPath, FileMode.Create);
                    stream.Write(bt, 0, bt.Length);
                    stream.Flush();
                    stream.Close();
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ep)
            {
                //ErrorMsg = ep.ToString();
                throw ep;
            }
        }
        /// <summary>
        /// 从FTP服务器下载文件,返回文件二进制数据
        /// </summary>
        public byte[] DownloadFile(String ftpPath, String LocalPath)
        {
            try
            {
                //if (!IsValidFileChars(RemoteFileName))
                //{
                //    throw new Exception("非法文件名或目录名!");
                //}
                FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpPath);
                ftpRequest.Credentials = new NetworkCredential(_account, _pwd);//登陆ftp的用户名,密码
                ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                FtpWebResponse Response = (FtpWebResponse)ftpRequest.GetResponse();
                Stream Reader = Response.GetResponseStream();

                MemoryStream mem = new MemoryStream(1024 * 500);
                byte[] buffer = new byte[1024];
                int bytesRead = 0;
                int TotalByteRead = 0;
                while (true)
                {
                    bytesRead = Reader.Read(buffer, 0, buffer.Length);
                    TotalByteRead += bytesRead;
                    if (bytesRead == 0)
                        break;
                    mem.Write(buffer, 0, bytesRead);
                }
                if (mem.Length > 0)
                {
                    return mem.ToArray();
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ep)
            {
                throw ep;
            }
        }
        #endregion

 

posted @ 2012-08-17 11:06  Alec-Yin  阅读(12109)  评论(0编辑  收藏  举报
更多前端博客,访问:http://lhyin.com