首頁 > 軟體

ftp伺服器搭建部署與C#實現ftp檔案的上傳的範例

2022-07-10 18:01:31

一、簡介

FTP是File Transfer Protocol(檔案傳輸協定)的英文簡稱,而中文簡稱為“文字協定”。用於Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協定以傳輸檔案。在ftp的使用當中,使用者經常遇到兩個概念:“下載”(Download)和“上傳”(upload)。“下載”檔案就是從遠端主機拷貝檔案至自己的計算機上;“上傳”檔案就是將檔案從自己的計算機中拷貝至遠端主機上。用Internet語言來說,使用者可通過客戶機程式向(從)遠端主機上傳(下載)檔案。

二、搭建FTP伺服器步驟(Window sserver 2016為例)

安裝FTP伺服器及部署   

新增FTP站點

IP地址填本機地址(不填則是本機全部IP),埠預設21,SSL是一種數位加密證書,可申請,在此沒有可選擇無。

 新增ftp上傳下載專用使用者(也可以選擇不新增,使用管理員使用者也OK) 

 到此ftp伺服器安裝和搭建部署,就完成了。

三、登入測試  

瀏覽器中輸入命令 ftp://IP:埠,彈窗提示輸入剛剛新建的使用者名稱密碼即可。

使用者名稱和密碼輸入正確的話就會出現公開的路徑。

四、C#上傳檔案到FTP伺服器

        /// <summary>
        /// FTP的伺服器地址,格式為ftp://192.168.1.234:8021/。
        /// </summary>
        public string FTPCONSTR { get; set; }
        /// <summary>
        /// //FTP伺服器的使用者名稱
        /// </summary>
        private string FTPUSERID { get; set; }
        /// <summary>
        /// //FTP伺服器的密碼
        /// </summary>
        private string FTPPASSWORD { get; set; }
        private string ftpIP { get; set; }
        private string ftpPort { get; set; }
public FTPHelper(string ip = "IP", string username = "登入使用者名稱", string password = "使用者密碼", string port = "埠")
        {
            FTPCONSTR = string.Format("{0}://{1}:{2}/", "ftp", ip, port);
            FTPUSERID = username;
            FTPPASSWORD = password;
        }
        /// <summary>
        /// 上傳檔案到遠端ftp
        /// </summary>
        /// <param name="path">原生的檔案目錄</param>
        /// <param name="name">檔名稱</param>
        /// <returns></returns>
        public bool UploadFile(string path, string name)
        {
            FileInfo f = new FileInfo(path);
            path = FTPCONSTR + name;//這個路徑是我要傳到ftp目錄下的這個目錄下
            FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
            reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
            reqFtp.UsePassive = false;//只需要新增這一句話
            reqFtp.UseBinary = true;
            reqFtp.Credentials = new NetworkCredential(FTPUSERID, FTPPASSWORD);
            reqFtp.KeepAlive = false;
            reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
            reqFtp.ContentLength = f.Length;
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
            int contentLen;
            FileStream fs = f.OpenRead();
            try
            {
                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 true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

呼叫 

            string txtFilePath="";
            try
            {
                OpenFileDialog openFileDialogTemp = new OpenFileDialog();
                openFileDialogTemp.Title = "選擇要上傳的檔案";
                DialogResult dr = openFileDialogTemp.ShowDialog();
                if (!File.Exists(openFileDialogTemp.FileName))
                {
                    GLOBALS.msgbox("內容為空,請選擇檔案");
                    return;
                }
                if (dr == DialogResult.OK)
                {
                    txtFilePath= openFileDialogTemp.FileName;
                    string filePath = this.txtFilePath.Text;
 
                }
            }
            catch (Exception ex)
            {
 
            }
            string id = DateTime.Now.ToString("yyyyMMddHHmmss");
            string isPath = DateTime.Now.ToString("yyyy-MM-dd");
            string filePath = txtFilePath;
            string uploadUrl = isPath + "\" + id + ".jpg";                
            FTPHelper FTPHelper = new FTPHelper();
            bool uploadresult = FTPHelper.UploadFile(filePath, uploadUrl);

如需ftp檢測目錄是否存在,不存在則建立資料夾,參考以下連結

C# ftp檢測目錄是否存在和建立資料夾

到此這篇關於ftp伺服器搭建部署與C#實現ftp檔案的上傳的範例的文章就介紹到這了,更多相關C# ftp檔案上傳內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com