• FTP文件传输


    最近在做文件传输之类的,发现了文件传输FTP,感觉还挺好用的,让文件的传输变得比较简单

    直接上示例

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Net.NetworkInformation;
    using UnityEngine;
    using UnityEngine.UI;
    
    
    public class newID_Cy : MonoBehaviour {
    
        public static newID_Cy ID_instance = null;
    
        public static string ftpclientaddress= "127.0.0.1:21";
        public static string ftpclientname = "username";
        public static string ftpclientmima = "password";
        
    
    
        public   static string mac = "";
        // Use this for initialization
        public Text text2;
       
        void Awake()
        {
    
            ID_instance = this;
            NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface ni in nis)
            {
                string temp = ni.GetPhysicalAddress().ToString();
                temp = temp.Trim();
                if (temp != null && temp.Length > 0)
                    mac += temp;
            }
    
            print("-------------------------------------------------------1:" + mac);
            print("-----2:" + newID_Cy.mac);
    
    
        }
    
        
    
    
        //取CPU编号   
        //public String GetCpuID()
        //{
        //    try
        //    {
        //        ManagementClass mc = new ManagementClass("Win32_Processor");
        //        ManagementObjectCollection moc = mc.GetInstances();
    
        //        String strCpuID = null;
        //        foreach (ManagementObject mo in moc)
        //        {
        //            strCpuID = mo.Properties["ProcessorId"].Value.ToString();
        //            break;
        //        }
        //        return strCpuID;
        //    }
        //    catch
        //    {
        //        return "";
        //    }
    
        //}//end method   
    
    }
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Linq;
    //using System.Data;
    
    using System.IO;
    using System.ComponentModel;
    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    using System.Security.Cryptography;
    using UnityEngine.SceneManagement;
    
    namespace Common
    {
    
        //fileUpload
    
        public class UpLoadVideo : MonoBehaviour
        {
    
            void Awake()
            {
              //  Debug.Log(Application.persistentDataPath);
            }
    
            UpLoadVideo.FTPClient clientn = new UpLoadVideo.FTPClient(newID_Cy.ftpclientaddress, newID_Cy.ftpclientname, newID_Cy.ftpclientmima);
            
    
            public static string GetPersistentFilePath(string filename)
            {
                string filepath;
    
    
              
                if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.OSXPlayer ||
                    Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
                {
                    filepath = Application.persistentDataPath + "/" + filename;
                   
                }
    
                else if (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.Android)
                {
                    filepath = Application.persistentDataPath + "/" + filename;
                   
                }
                else
                {
                    filepath = Application.persistentDataPath + "/" + filename;
                   
                }
    
    
                return filepath;
            }
    
    
    
            public static string GetPersistentFilePath()
            {
                string filepath;
    
                //http://www.cnblogs.com/vsirWaiter/p/5340284.html
                if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.OSXPlayer ||
                    Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
                    filepath = "file://" + Application.persistentDataPath + "/" + "Video" + "/";
                else if (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.Android)
                    filepath = Application.persistentDataPath + "/" + "Video" + "/";
                else
                {
                    filepath = Application.persistentDataPath + "/" + "Video" + "/";
                }
    
                return filepath;
            }
    
    
            //上传视频到指定文件夹
            public void Upload()
            {
    
                FTPClient client = new FTPClient(newID_Cy.ftpclientaddress, newID_Cy.ftpclientname, newID_Cy.ftpclientmima);
                
                System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
                
                FileInfo f = new FileInfo(GetPersistentFilePath("testvideo.mp4"));
              
                client.fileUpload(f, "Video/", "testvideo.mp4");
    
                if (!client.fileCheckExist("Video/", "testvideo.mp4"))
                {
                    Debug.Log("失败");
                }
                else
                {
                    Debug.Log("成功");
                }
    
            }
            
            //下载视频到本地
    
            public void DownLoadVideo()
            {
                FTPClient client = new FTPClient(newID_Cy.ftpclientaddress, newID_Cy.ftpclientname, newID_Cy.ftpclientmima);
                client.fileDownload(@"H:FTPRoot	estDownLoad", "downloadvideo.mp4", "Video/testDownLoad/", "testvideo.mp4");
            }
    
    
            public class FTPClient // : MonoBehaviour
            {
               
    
                public Text MessageBox2;
                private string ftpServerIP = String.Empty;
                private string ftpUser = String.Empty;
                private string ftpPassword = String.Empty;
                private string ftpRootURL = String.Empty;
                public FTPClient(string url, string userid, string password)
                {
                    this.ftpServerIP = url;
                    this.ftpUser = userid;
                    this.ftpPassword = password;
                    this.ftpRootURL = "ftp://" + url + "/"; 
                }
                /// <summary>
                /// 上传
                /// </summary>
                /// <param name="localFile">本地文件绝对路径</param>
                /// <param name="ftpPath">上传到ftp的路径</param>
                /// <param name="ftpFileName">上传到ftp的文件名</param>
                public bool fileUpload(FileInfo localFile, string ftpPath, string ftpFileName)
                {
                    bool success = false;
                    FtpWebRequest ftpWebRequest = null;
                    FileStream localFileStream = null;
                    Stream requestStream = null;
    
                    System.GC.Collect();
    
                    string uri = ftpRootURL + ftpPath + ftpFileName;
                  
    
                    ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
    
    
    
                    ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
    
    
    
                    System.Net.ServicePointManager.DefaultConnectionLimit = 1000;
    
    
    
                    ftpWebRequest.UseBinary = true;
                    ftpWebRequest.KeepAlive = false;
                    ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
                    ftpWebRequest.ContentLength = localFile.Length;
                    ftpWebRequest.UsePassive = true;
                   
                    ftpWebRequest.Timeout = 100000;
    
                   
    
                    int buffLength = 2048;
                    byte[] buff = new byte[buffLength];
                    int contentLen = 0;
                    localFileStream = localFile.OpenRead();
    
    
    
                    try
                    {
    
                        requestStream = ftpWebRequest.GetRequestStream();
                        contentLen = localFileStream.Read(buff, 0, buffLength);
    
                        while (contentLen != 0)
                        {
    
                            requestStream.Write(buff, 0, contentLen);
                            contentLen = localFileStream.Read(buff, 0, buffLength);
                            // contentLen--;
                        }
                        requestStream.Close();
                        localFileStream.Close();
    
                    }
                    catch (Exception ty)
                    {
                        // ab.text = ty.ToString();
                        print(ty);
    
                    }
    
    
    
    
    
    
    
    
                    success = true;
                    
                    if (requestStream != null)
                    {
    
    
                    }
                    if (localFileStream != null)
                    {
    
    
                    }
                    //}
    
                    if (ftpWebRequest != null)
                    {
                        
                    }
    
    
                    return success;
                }
                /// <summary>
                /// 上传文件
                /// </summary>
                /// <param name="localPath">本地文件地址(没有文件名)</param>
                /// <param name="localFileName">本地文件名</param>
                /// <param name="ftpPath">上传到ftp的路径</param>
                /// <param name="ftpFileName">上传到ftp的文件名</param>
                public bool fileUpload(string localPath, string localFileName, string ftpPath, string ftpFileName)
                {
                    bool success = false;
                    try
                    {
                        FileInfo localFile = new FileInfo(localPath + localFileName);
                        if (localFile.Exists)
                        {
                            success = fileUpload(localFile, ftpPath, ftpFileName);
                        }
                        else
                        {
                            success = false;
                        }
                    }
                    catch (Exception)
                    {
                        success = false;
                    }
                    return success;
                }
    
    
    
    
                /// <summary>
                /// 下载文件
                /// </summary>
                /// <param name="localPath">本地文件地址(没有文件名)</param>
                /// <param name="localFileName">本地文件名</param>
                /// <param name="ftpPath">下载的ftp的路径</param>
                /// <param name="ftpFileName">下载的ftp的文件名</param>
                public bool fileDownload(string localPath, string localFileName, string ftpPath, string ftpFileName)
                {
                    bool success = false;
                    FtpWebRequest ftpWebRequest = null;
                    FtpWebResponse ftpWebResponse = null;
                    Stream ftpResponseStream = null;
                    FileStream outputStream = null;
                    try
                    {
                        outputStream = new FileStream(localPath + localFileName, FileMode.Create);
                        string uri = ftpRootURL + ftpPath + ftpFileName; 
                        ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                        ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
                        ftpWebRequest.UseBinary = true;
                        ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                        ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
                        ftpResponseStream = ftpWebResponse.GetResponseStream();
                        //  a.text = ftpResponseStream.Length.ToString();
    
    
                        long contentLength = ftpWebResponse.ContentLength;
                        int bufferSize = 2048;
                        byte[] buffer = new byte[bufferSize];
                        int readCount;
                        readCount = ftpResponseStream.Read(buffer, 0, bufferSize);
                        while (readCount > 0)
                        {
                            outputStream.Write(buffer, 0, readCount);
                            readCount = ftpResponseStream.Read(buffer, 0, bufferSize);
                        }
                        success = true;
                    }
                    catch (Exception)
                    {
                        success = false;
                    }
                    finally
                    {
                        if (outputStream != null)
                        {
                            outputStream.Close();
                        }
                        if (ftpResponseStream != null)
                        {
                            ftpResponseStream.Close();
                        }
                        if (ftpWebResponse != null)
                        {
                            ftpWebResponse.Close();
                        }
                    }
                    return success;
                }
                /// <summary>
                /// 重命名 
                /// </summary>
                /// <param name="ftpPath">ftp文件路径</param>
                /// <param name="currentFilename"></param>
                /// <param name="newFilename"></param>
                public bool fileRename(string ftpPath, string currentFileName, string newFileName)
                {
                    bool success = false;
                    FtpWebRequest ftpWebRequest = null;
                    FtpWebResponse ftpWebResponse = null;
                    Stream ftpResponseStream = null;
                    try
                    {
                        string uri = ftpRootURL + ftpPath + currentFileName;
                        ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                        ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
                        ftpWebRequest.UseBinary = true;
                        ftpWebRequest.Method = WebRequestMethods.Ftp.Rename;
                        ftpWebRequest.RenameTo = newFileName;
    
                        ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
                        ftpResponseStream = ftpWebResponse.GetResponseStream();
    
                    }
                    catch (Exception)
                    {
                        success = false;
                    }
                    finally
                    {
                        if (ftpResponseStream != null)
                        {
                            ftpResponseStream.Close();
                        }
                        if (ftpWebResponse != null)
                        {
                            ftpWebResponse.Close();
                        }
                    }
                    return success;
                }
                /// <summary>
                /// 消除文件
                /// </summary>
                /// <param name="filePath"></param>
                public bool fileDelete(string ftpPath, string ftpName)
                {
                    bool success = false;
                    FtpWebRequest ftpWebRequest = null;
                    FtpWebResponse ftpWebResponse = null;
                    Stream ftpResponseStream = null;
                    StreamReader streamReader = null;
                    try
                    {
                        string uri = ftpRootURL + ftpPath + ftpName;
                        ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                        ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
                        ftpWebRequest.KeepAlive = false;
                        ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile;
                        ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
                        long size = ftpWebResponse.ContentLength;
                        ftpResponseStream = ftpWebResponse.GetResponseStream();
                        streamReader = new StreamReader(ftpResponseStream);
                        string result = String.Empty;
                        result = streamReader.ReadToEnd();
    
                        success = true;
                    }
                    catch (Exception)
                    {
                        success = false;
                    }
                    finally
                    {
                        if (streamReader != null)
                        {
                            streamReader.Close();
                        }
                        if (ftpResponseStream != null)
                        {
                            ftpResponseStream.Close();
                        }
                        if (ftpWebResponse != null)
                        {
                            ftpWebResponse.Close();
                        }
                    }
                    return success;
                }
    
    
    
                
    
    
    
    
                /// <summary>
                /// 文件存在检查
                /// </summary>
                /// <param name="ftpPath"></param>
                /// <param name="ftpName"></param>
                /// <returns></returns>
                public bool fileCheckExist(string ftpPath, string ftpName)
                {
                    bool success = false;
                    FtpWebRequest ftpWebRequest = null;
                    WebResponse webResponse = null;
                    StreamReader reader = null;
                    try
                    {
                        string url = ftpRootURL + ftpPath;
    
                        ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
                        ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
                        ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;
                        ftpWebRequest.KeepAlive = false;
                        webResponse = ftpWebRequest.GetResponse();
                        reader = new StreamReader(webResponse.GetResponseStream());
                        string line = reader.ReadLine();
                        while (line != null)
                        {
                            if (line == ftpName)
                            {
                                success = true;
                                break;
                            }
                            line = reader.ReadLine();
                        }
                    }
                    catch (Exception)
                    {
                        success = false;
                    }
                    finally
                    {
                        if (reader != null)
                        {
                            reader.Close();
                        }
                        if (webResponse != null)
                        {
                            webResponse.Close();
                        }
                    }
                    return success;
                }
            }
        }
    }

    纯属个人笔记,所实现的功能仅满足个人的项目要求,更多的功能大家可以继续学习

  • 相关阅读:
    Linux ubuntu 下 git 服务器的配置 应用
    linux ubuntu 11.10 下的android开发环境的搭建!
    转载: Ubuntu下安装JDK图文教程详解 jdkjava630 .bin 的处理方法
    求助 关于openlaszlo的配置问题 。。
    J鬼
    Hibernate 之 概述
    C#实现http协议支持上传下载文件的GET、POST请求
    关于程序员的政治(转)
    使用VisualC#实现断点续传
    HttpWebRequest
  • 原文地址:https://www.cnblogs.com/MissLi/p/8025799.html
Copyright © 2020-2023  润新知