本篇文章要分享 C# FTP上傳教學 ,通常如果要更新FTP上的檔案、應該都是要下載下來將檔案更新後再覆蓋,但如果是更新純文字檔(.txt)的話,可以借由使用 AppendFile的方式直接在ftp伺服器上修改資料,以下就來看看小編如何操作的吧!
在C#中修改FTP上檔案的方式主要分為以下兩種:
方法1:將檔案下載下來然後再上傳更新。
方法2:直接線上更新FTP內檔案使用《AppendFile》的方式來達成。
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 + "rn");
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 + "rn");
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();
}
}
}
延伸閱讀: