• FTP上传、下载(简单小例子)


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Net;
    
    namespace FTPConsoleApplication
    {
        class Program  
        {  
            static void Main(string[] args)  
            {
                //测试
                //DownloadFtp("优课.png");
                //UploadFtp("FTPConsoleApplication.exe.config");
                //SystemLog.logger("OK"); 
            }  
      
            public static FtpStatusCode UploadFileInFTP(string filename)  
            {  
                Stream requestStream = null;  
                FileStream fileStream = null;  
                FtpWebResponse uploadResponse = null;  
                FtpWebRequest uploadRequest = null;  
                string serverIP;  
                string userName;  
                string password;  
                string uploadurl;  
      
                try  
                {  
                    serverIP = System.Configuration.ConfigurationManager.AppSettings["FTPServerIP"];  
                    userName = System.Configuration.ConfigurationManager.AppSettings["UserName"];  
                    password = System.Configuration.ConfigurationManager.AppSettings["Password"];  
                    uploadurl = "ftp://" + serverIP + "/" + Path.GetFileName(filename);  
                    uploadRequest = (FtpWebRequest)WebRequest.Create(uploadurl);  
                    uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;  
                    uploadRequest.Proxy = null;  
                    NetworkCredential nc = new NetworkCredential();  
                    nc.UserName = userName;  
                    nc.Password = password;  
                    uploadRequest.Credentials = nc;  
                    requestStream = uploadRequest.GetRequestStream();  
                    fileStream = File.Open(filename, 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();  
                    uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();  
                    return uploadResponse.StatusCode;  
                }  
                catch (Exception e)  
                {  
                    SystemLog.logger(e.InnerException.Message);  
                }  
                finally  
                {  
                    if (uploadResponse != null)  
                    {  
                        uploadResponse.Close();  
                    }  
                    if (fileStream != null)  
                    {  
                        fileStream.Close();  
                    }  
                    if (requestStream != null)  
                    {  
                        requestStream.Close();  
                    }  
      
                }  
                return FtpStatusCode.Undefined;  
            }  
      
      
            public static int UploadFtp(string filename)  
            {  
                FtpWebRequest reqFTP = null;  
                string serverIP;  
                string userName;  
                string password;  
                string url;  
      
                try  
                {  
                     FileInfo fileInf = new FileInfo(filename);
                     serverIP = System.Configuration.ConfigurationManager.AppSettings["FTPServerIP"];
                     userName = System.Configuration.ConfigurationManager.AppSettings["UserName"];
                     password = System.Configuration.ConfigurationManager.AppSettings["Password"];  
                     url = "ftp://" + serverIP + "/" + Path.GetFileName(filename);  
       
                     reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));  
                     reqFTP.Credentials = new NetworkCredential(userName, password);  
                     reqFTP.KeepAlive = false;  
                     reqFTP.Method = WebRequestMethods.Ftp.UploadFile;  
                     reqFTP.UseBinary = true;  
                     reqFTP.ContentLength = fileInf.Length;  
       
                     int buffLength = 2048;  
                     byte[] buff = new byte[buffLength];  
                     int contentLen;  
       
                     FileStream fs = fileInf.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);  
       
                     Stream strm = reqFTP.GetRequestStream();  
       
                     contentLen = fs.Read(buff, 0, buffLength);  
       
                     while (contentLen != 0)  
                     {  
       
                         strm.Write(buff, 0, contentLen);  
                         contentLen = fs.Read(buff, 0, buffLength);  
                     }  
       
                     strm.Close();  
                     fs.Close();  
                     return 0;  
                 }  
                 catch (Exception ex)  
                 {  
                     if (reqFTP != null)  
                     {  
                         reqFTP.Abort();  
                     }  
                     SystemLog.logger(ex.InnerException.Message);  
                     return -2;  
                 }  
             }  
       
       
             public static int DownloadFtp(string filename)  
             {  
                 FtpWebRequest reqFTP;  
                 string serverIP;  
                 string userName;  
                 string password;  
                 string url;  
       
                 try  
                 {
                     serverIP = System.Configuration.ConfigurationManager.AppSettings["FTPServerIP"];
                     userName = System.Configuration.ConfigurationManager.AppSettings["UserName"];
                     password = System.Configuration.ConfigurationManager.AppSettings["Password"];  
                     url = "ftp://" + serverIP + "/" + Path.GetFileName(filename);  
       
                     FileStream outputStream = new FileStream(filename, FileMode.Create);  
                     reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));  
                     reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;  
                     reqFTP.UseBinary = true;  
                     reqFTP.KeepAlive = false;  
                     reqFTP.Credentials = new NetworkCredential(userName, password);  
                     FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();  
                     Stream ftpStream = response.GetResponseStream();  
                     long cl = response.ContentLength;  
                     int bufferSize = 2048;  
                     int readCount;  
                     byte[] buffer = new byte[bufferSize];  
                     readCount = ftpStream.Read(buffer, 0, bufferSize);  
                     while (readCount > 0)  
                     {  
                         outputStream.Write(buffer, 0, readCount);  
                         readCount = ftpStream.Read(buffer, 0, bufferSize);  
                     }  
                     ftpStream.Close();  
                     outputStream.Close();  
                     response.Close();  
                     return 0;  
                 }  
                 catch (Exception ex)  
                 {  
                     SystemLog.logger(ex.InnerException.Message);  
                     return -2;  
                 }  
             }  
       
       
             public class SystemLog  
             {  
       
                 public static bool logger(string message)  
                 {  
                     try  
                     {  
                         DateTime timeNow = DateTime.Now;  
                         string logPath = System.Configuration.ConfigurationManager.AppSettings["LogPath"];  
                         string logSwitch = System.Configuration.ConfigurationManager.AppSettings["LogSwitch"];  
                         if (logSwitch == "1")  
                         {  
                             string logFullPath = Path.Combine(System.Environment.CurrentDirectory,logPath);
                             DirectoryInfo dirInfo = new DirectoryInfo(logFullPath);
                             if (!dirInfo.Exists)
                             {
                                 dirInfo.Create();
                             }
    
                             Encoding encoding = Encoding.GetEncoding("gb2312");  
                             byte[] info = encoding.GetBytes("[ " + timeNow.ToString("yyyy-MM-dd HH:mm:ss") + " ] " + message + "
    "); //转换编码成字节串  
    
                             if (!logPath.EndsWith(Path.DirectorySeparatorChar.ToString()))
                             {
                                 logPath = logPath + Path.DirectorySeparatorChar.ToString();
                             }  
                            
                             using (FileStream fs = System.IO.File.Open(logPath + timeNow.ToString("yyyy_MM_dd") + ".txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))  
                             {  
                                 fs.Write(info, 0, info.Length);  
                                 //以ASCII方式编写  
                                 using (StreamWriter w = new StreamWriter(fs, Encoding.ASCII))  
                                 {  
                                     w.Flush();  
                                     w.Close();  
                                 }  
       
                                 fs.Close();  
                             }  
                         }  
                         return true;  
                     }  
                     catch (Exception e)  
                     {  
                         return false;  
                     }  
                 }  
             }  
       
         }  
    
    }
    View Code
  • 相关阅读:
    asp.net中virtual和abstract的区别分析
    .NET中的Timer类型用法详解
    类型参数的约束(C# 编程指南)T
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    jquery的$.extend和$.fn.extend作用及区别
    类型参数约束 : Controller where T : class,new()
    asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码
    字符串一级指针的内存模型图(盲点,以前自己懵懂)
    字符串的基本操作,初始化和赋值之类的区别,和数据名是一个常量指针不可以改变和赋值(盲点众多)
    关于内存四区和指针的修改问题
  • 原文地址:https://www.cnblogs.com/shenchao/p/6419754.html
Copyright © 2020-2023  润新知