zoukankan      html  css  js  c++  java
  • Ftp 文件上传下载类

    调用:

    FtpOption ftp = new FtpOption("10.128.3.90", "21", "uid", "pwd");
    
    下载文件:
    bool success = ftp.DownLoadNotReName("ST/mylyb/grapes/03/11041112.003", "E:/");
    bool success = ftp.DownLoadReName("ST/myl-yb/grapes/03/11041112.003", "E:/rename.003");
    上传文件:
    bool success=ftp.UploadFile("G:/Ftp.txt","temp"); 

    类:

    using System;
    using System.IO;
    using System.Net;
    namespace WindowsFormsApplication1
    {
        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="sourceFullPath">要上传文件的地址(G:/Ftp.txt)</param>
            /// <param name="targetPath">服务器端地址(temp)</param>
            /// <returns></returns>
            public bool UploadFile(string sourceFullPath, string targetPath)
            {
                try
                {
                    string fileName = sourceFullPath.Substring(sourceFullPath.LastIndexOf("/") + 1);
                    //检查路径
                    Uri uri = new Uri(string.Format("ftp://{0}:{1}/{2}/{3}", serverIP, serverPort, targetPath, fileName));
                    FtpWebRequest request = this.OpenRequest(uri, WebRequestMethods.Ftp.UploadFile);
                    Stream requestStream = request.GetRequestStream();
                    FileStream fileStream = new System.IO.FileStream(sourceFullPath, 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;
                }
            }
        }
    }

    
  • 相关阅读:
    摄像头标定
    Call PDF to Vector Converter Command Line from C#, ASP, etc. web program languages
    Camera Calibration and 3D Reconstruction
    C++获取一个文件夹下的所有文件名(转)
    javascript学习之对象应用
    javascript中Array对象总结
    Joomla学习之模块
    关于ci中的表单提交问题
    phpcms之文件目录
    jQuery中的join方法
  • 原文地址:https://www.cnblogs.com/kingteach/p/2024665.html
Copyright © 2011-2022 走看看