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; } } }