C# FTP 上傳

還在找工作的同時最近也在弄一些有的沒的
當作是筆記吧
// ftp site 帳號密碼
string ftp_id = “your id”;
string ftp_pw = “your password”;
// site location + 目錄設定
string ftp_site = “ftp://youftpdomain.com//”; // 這邊用double slash 是為了解一個目錄 bug
string dict = “public_html”; // 一般免空或 apache server 要求的目錄名稱
string subdict = “blahblahblah”; // 這個就看個人了,我是用日期做基本的資料夾分類,另外可以用 TextBox 輸入
// 新增資料夾
try
{
FtpWebRequest Request = (FtpWebRequest)WebRequest.Create(“ftp://” + ftpsite.Text + dict.Text + “/” + subdict.Text);
// 啟用 SSL (安全問題,你知道的,不過要看 ftp server 那邊支援與否)
//Request.EnableSsl = true;
Request.Credentials = new NetworkCredential(ftp_id, ftp_pw);
Request.Method = WebRequestMethods.Ftp.MakeDirectory;
// Timeout 時間或許要視檔案數量、大小、上傳速度來考量
Request.Timeout = (60000 * 1); // x1 一分鐘
FtpWebResponse Response = (FtpWebResponse)Request.GetResponse();
status = Response.StatusCode.ToString();
Response.Close();
}
catch (Exception ex)
{
status.Text = “oops, 建立目錄發生問題, 抑或是目錄已存在\r\n” + ex.Message;
}
//上傳功能
try
{
Stream requestStream = null;
FileStream fileStream = null;
FtpWebResponse uploadResponse = null;
// 取得檔名
string temp;
temp = Path.GetFileName(location.Text);
FtpWebRequest uploadRequest =
(FtpWebRequest)WebRequest.Create(ftpsite.Text + dict.Text + “/” + subdict.Text + “/” + temp);
// 啟用 SSL (避免id/pw以明文方式夾在在封包傳遞)
//Request.EnableSsl = true;
uploadRequest.Credentials = new NetworkCredential(ftp_id, ftp_pw);
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
// Timeout 時間或許要視檔案數量、大小、上傳速度來考量
uploadRequest.Timeout = (60000 * 1); // x1 一分鐘
// 取得 listbox 中檔案實體位置
temp = location.Text;
requestStream = uploadRequest.GetRequestStream();
fileStream = File.Open(temp, FileMode.Open);
byte[] buffer = new byte[2048];
int bytesRead;
while (true)
{
bytesRead = fileStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
requestStream.Write(buffer, 0, bytesRead);
}
requestStream.Close();
fileStream.Close(); // fileStream I/O 存取記得要關閉
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();
}
catch (Exception ex)
{
status = ex.Message;
}
修改跟刪除就先沒寫了…等 0.5 或 0.6 版再來加…
如果我記得的話啦….
其實原本一些奇怪的工具是要在 php 環境下搭配 HTML5 來玩
加上 MySQL 這樣在管理圖片動向上會比較方便
後來還是用 C#
可能寫這一支程式加上 Debug 的時候等同於手動個幾十次幾百次
就當作是練習吧
說真的寫沒幾次 MultiThread 的程式