C# FTP上傳教學

本篇文章要分享 C# FTP上傳教學 ,通常如果要更新FTP上的檔案、應該都是要下載下來將檔案更新後再覆蓋,但如果是更新純文字檔(.txt)的話,可以借由使用 AppendFile的方式直接在ftp伺服器上修改資料,以下就來看看小編如何操作的吧!

 

  在C#中修改FTP上檔案的方式主要分為以下兩種:
方法1:將檔案下載下來然後再上傳更新。
方法2:直接線上更新FTP內檔案使用《AppendFile》的方式來達成。

【本篇主要介紹第二種方式的範例教學】
C# FTP上傳教學

 

 

  FTP程式範例如下:

1. 首先設定FTP連線

ftpPath – 請填入ftp的位置。
ftpID     – 請填入登入的帳號。
ftpPW   – 請填入登入的密碼。

string FtpPath = "ftp://XXX.XX.XX.X/XXXX/"; /* 輸入自己的FTP路徑 */
string FtpID = "temp";
string FtpPW = "temp1234";

 

2.將要寫入到FTP的文字資料寫入到字串(string)中,這邊小編是選擇將資料先輸入在txtbox中,然後再將資料傳到user_Input中,然後等待資料寫入。

string user_Input = textBox_Input.Text;

 

3.將要上傳的FTP檔案路徑寫入到target。

Uri target = new Uri(FtpPath + "Code1.txt");

 

4.將要寫入的資料轉換為byte的資料格式。

byte[] data = System.Text.Encoding.Default.GetBytes(user_Input + "\r\n");

 

5.FTP參數設定,這邊依自己的需求來設定。

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
            request.KeepAlive = false;  /* 關閉/保持 連線           */
            request.Timeout = 2000;     /* 等待時間                 */
            request.UseBinary = true;   /* 傳輸資料型別 二進位/文字 */
            request.UsePassive = false; /* 通訊埠接聽並等待連接     */

 

6.這一段是本篇文章最重要的部分,設定ftp更新檔案的方式是採用「AppendFile」。

request.Method = WebRequestMethods.Ftp.AppendFile;

 

7.設定要上傳到FTP的字串長度。

request.ContentLength = data.Length;

 

8.建立FTP連線,並帶入帳號密碼。

request.Credentials = new NetworkCredential(FtpID, FtpPW);
Stream requestStream = request.GetRequestStream();

 

9.將資料寫入FTP。

requestStream.Write(data, 0, data.Length);

 

10.關閉FTP通訊與串流。

requestStream.Close();
requestStream.Dispose();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
/* Close FTP */
request.Abort();

 

更詳細完整範例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
/* FTP Using */
using System.Web;
using System.Net;
using System.IO;
namespace FTP_Append_file
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        /* 更新FTP文件 */
        private void button1_Click(object sender, EventArgs e)
        {
            /* FTP帳號密碼 */
            string FtpPath = "ftp://XXX.XX.XX.X/XXXX/"; /* 輸入自己的FTP路徑 */
            string FtpID = "temp";
            string FtpPW = "temp1234";
            /* 來源資料輸入 */
            string user_Input = textBox_Input.Text;
            /* 修改的檔案名稱Code1.txt */
            Uri target = new Uri(FtpPath + "Code1.txt");
            byte[] data = System.Text.Encoding.Default.GetBytes(user_Input + "\r\n");
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
            request.KeepAlive = false;  /* 關閉/保持 連線           */
            request.Timeout = 2000;     /* 等待時間                 */
            request.UseBinary = true;   /* 傳輸資料型別 二進位/文字 */
            request.UsePassive = false; /* 通訊埠接聽並等待連接     */
            /* 使用AppendFile 的方式上傳 */
            request.Method = WebRequestMethods.Ftp.AppendFile;
            request.ContentLength = data.Length;
            request.Credentials = new NetworkCredential(FtpID, FtpPW);
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(data, 0, data.Length);
            requestStream.Close();
            requestStream.Dispose();
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            response.Close();
            /* Close FTP */
            request.Abort();
        }
    }
}

 

延伸閱讀:

C# Application.DoEvents強制跳脫迴圈

C# TextBox Multiline自動刪除第一行

C#工作管理員中隱藏程式

C#視窗關閉按鈕移除

電腦維修》下載電腦遺失或損壞的Dll檔案