文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Ftp 文件上传下载类

Ftp 文件上传下载类

时间:2011-04-22  来源:育慧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace Utils
{
    public class FtpOption
    {
        #region

        string serverIP;
        string serverPort;
        string userId;
        string passWord;

        public FtpOption(string serverIP, string serverPort, string userId, string passWord)
        {
            this.serverIP = serverIP;
            this.serverPort = serverPort ?? "21";
            this.userId = userId;
            this.passWord = passWord;
        }

        private FtpWebRequest OpenRequest(Uri uri, string ftpMethord)
        {
            try
            {
                FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(uri);
                ftpRequest.Credentials = new NetworkCredential(userId, passWord);
                ftpRequest.Method = ftpMethord;
                ftpRequest.UseBinary = true;
                return ftpRequest;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private FtpWebResponse OpenResponse(Uri uri, string ftpMethord)
        {
            try
            {
                return this.OpenRequest(uri, ftpMethord).GetResponse() as FtpWebResponse;
            }
            catch
            {
                throw new Exception("登录到Ftp服务器失败!");
            }
        }

        #endregion

        /// <summary>
        /// 下载(重命名)
        /// </summary>
        /// <param name="sourceFullPath">下载文件全路径</param>
        /// <param name="targetFullPath">下载到本机全路径(包含文件名)</param>
        /// <returns></returns>
        public bool DownLoadReName(string sourceFullPath, string targetFullPath)
        {
            try
            {
                Uri uri = new Uri(string.Format("ftp://{0}/{1}", serverIP, sourceFullPath));
                FtpWebResponse downloadResponse = OpenResponse(uri, WebRequestMethods.Ftp.DownloadFile);
                Stream responseStream = downloadResponse.GetResponseStream();
                FileStream fileStream = File.Create(targetFullPath);
                byte[] buffer = new byte[1024];
                int bytesRead = 0;
                while (true)
                {
                    bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                    if (bytesRead == 0)
                        break;
                    fileStream.Write(buffer, 0, bytesRead);
                }
                fileStream.Close();
                responseStream.Close();
                return true;
            }
            catch
            {
                throw new Exception("获取下载文件失败!");
            }
        }
        /// <summary>
        /// 下载(按原名直接)
        /// </summary>
        /// <param name="loadFullPath">下载文件的全路径</param>
        /// <param name="targePath">下载到指定的地址(E:/)</param>
        /// <returns></returns>
        public bool DownLoadNotReName(string sourceFullPath, string targePath)
        {
            try
            {
                string fileName = sourceFullPath.Substring(sourceFullPath.LastIndexOf("/"));
                return DownLoadReName(sourceFullPath, targePath + fileName);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="clientFullPath">上传本地文件全路径('F:/test.txt')</param>
        /// <returns></returns>
        public bool UploadFile(string clientFullPath)
        {
            try
            {
                string fileName = clientFullPath.Substring(clientFullPath.LastIndexOf("/"));
                //检查路径
                Uri uri = new Uri(string.Format("ftp://{0}:{1}/{2}", serverIP, serverPort, fileName));
                FtpWebRequest request = this.OpenRequest(uri, WebRequestMethods.Ftp.UploadFile);
                Stream requestStream = request.GetRequestStream();
                FileStream fileStream = new System.IO.FileStream(clientFullPath, FileMode.Open);
                byte[] buffer = new byte[1024];
                int bytesRead;
                while (true)
                {
                    bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                    if (bytesRead == 0)
                        break;
                    requestStream.Write(buffer, 0, bytesRead);
                }
                requestStream.Close();
                request.GetResponse();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
    }
}
调用:
 FtpOption ftp = new FtpOption("10.128.3.90", "21", "uid", "pwd");
bool success = ftp.DownLoadNotReName("ST/myl-yb/grapes/03/11041112.003", "E:/");
bool success = ftp.DownLoadReName("ST/myl-yb/grapes/03/11041112.003", "E:/rename.003");
相关阅读 更多 +
排行榜 更多 +
毒药轮盘手机版下载

毒药轮盘手机版下载

休闲益智 下载
剑侠情缘零b服手游下载

剑侠情缘零b服手游下载

角色扮演 下载
惊魂动物园游戏手机版下载

惊魂动物园游戏手机版下载

冒险解谜 下载