• C#FTP上传下载 和判断是否连接*


    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Runtime.InteropServices;
    using System.Text;
    
    namespace IPadPower
    {
       public class FtpHelper
        { 
            /// <summary>
            /// ftp方式上传 
            /// </summary>
            public static int UploadFtp(string filePath, string filename, string ftpServerIP, string ftpUserID, string ftpPassword)
            {
                FileInfo fileInf = new FileInfo(filePath + "\" + filename);
                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
                FtpWebRequest reqFTP;
                // Create FtpWebRequest object from the Uri provided 
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
                try
                {
                    // Provide the WebPermission Credintials 
                    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
     
                    // By default KeepAlive is true, where the control connection is not closed 
                    // after a command is executed. 
                    reqFTP.KeepAlive = false;
     
                    // Specify the command to be executed. 
                    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
     
                    // Specify the data transfer type. 
                    reqFTP.UseBinary = true;
     
                    // Notify the server about the size of the uploaded file 
                    reqFTP.ContentLength = fileInf.Length;
     
                    // The buffer size is set to 2kb 
                    int buffLength = 2048;
                    byte[] buff = new byte[buffLength];
                    int contentLen;
     
                    // Opens a file stream (System.IO.FileStream) to read the file to be uploaded 
                    //FileStream fs = fileInf.OpenRead(); 
                    FileStream fs = fileInf.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
     
                    // Stream to which the file to be upload is written 
                    Stream strm = reqFTP.GetRequestStream();
     
                    // Read from the file stream 2kb at a time 
                    contentLen = fs.Read(buff, 0, buffLength);
     
                    // Till Stream content ends 
                    while (contentLen != 0)
                    {
                        // Write Content from the file stream to the FTP Upload Stream 
                        strm.Write(buff, 0, contentLen);
                        contentLen = fs.Read(buff, 0, buffLength);
                    }
     
                    // Close the file stream and the Request Stream 
                    strm.Close();
                    fs.Close();
                    return 0;
                }
                catch (Exception ex)
                {
                    reqFTP.Abort();
                    //  Logging.WriteError(ex.Message + ex.StackTrace);
                    return -2;
                }
            }
     
            /// <summary>
            /// ftp方式下载 
            /// </summary>
            public static int DownloadFtp(string filePath, string fileName,string ftpFileName, string ftpServerIP, string ftpUserID, string ftpPassword)
            {
                FtpWebRequest reqFTP;
                try
                {
                    //filePath = < <The full path where the file is to be created.>>, 
                    //fileName = < <Name of the file to be created(Need not be the name of the file on FTP server).>> 
                    FileStream outputStream = new FileStream(filePath + "\" + fileName, FileMode.Create);
    
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + ftpFileName));
                    reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                    reqFTP.UseBinary = true;
                    reqFTP.KeepAlive = false;
                    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                    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)
                {
                    // Logging.WriteError(ex.Message + ex.StackTrace);
                    // System.Windows.Forms.MessageBox.Show(ex.Message);
                    return -2;
                }
            }
    
    
    
            [DllImport("winInet.dll")]
            private static extern bool InternetGetConnectedState(ref int dwFlag, int dwReserved);
            private const int INTERNET_CONNECTION_MODEM = 1;
            private const int INTERNET_CONNECTION_LAN = 2;
            /// <summary>
            /// 判断本机是否联网
            /// </summary>
            /// <returns></returns>
            public static bool IsConnectNetwork()
            {
                try
                {
                    int dwFlag = 0;
    
                    //false表示没有连接到任何网络,true表示已连接到网络上
                    if (!InternetGetConnectedState(ref dwFlag, 0))
                    {
    
                        //if (!InternetGetConnectedState(ref dwFlag, 0))
                        //     Console.WriteLine("未连网!");
                        //else if ((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
                        //    Console.WriteLine("采用调治解调器上网。");
                        //else if ((dwFlag & INTERNET_CONNECTION_LAN) != 0)
                        //    Console.WriteLine("采用网卡上网。"); 
                        return false;
                    }
    
                    //判断当前网络是否可用
                    IPAddress[] addresslist = Dns.GetHostAddresses("www.baidu.com");
                    if (addresslist[0].ToString().Length <= 6)
                    {
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    return false;
                }
                return true;
            }
        }
    }
  • 相关阅读:
    Node.js+express 4.x 入门笔记
    排序系列 之 堆排序算法 —— Java实现
    排序系列 之 归并排序算法 —— Java实现
    javascript必须知道的知识要点(二)
    XGBoost安装
    ubuntu16.04查看哪些软件可更新
    禁止ubuntu更新内核
    ubuntu安装nvidia显卡驱动问题
    禁用ubuntu16.04的guest账户
    远程登录jupyter notebook
  • 原文地址:https://www.cnblogs.com/dawn-cn/p/4070045.html
Copyright © 2020-2023  润新知