C 上傳FTP伺服器

2021-07-31 07:12:58 字數 4471 閱讀 8900

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;

using system.io;

using system.net;

using system.text.regularexpressions;

namespace server_fuwuqi

private static ftpwebrequest getrequest(string uri, string username, string password)

///

/// 上傳檔案

///

/// 需要上傳的檔案

/// 目標路徑

/// ftp位址

/// ftp使用者名稱

/// ftp密碼

public static void uploadfile(fileinfo fileinfo, string targetdir, string hostname, string username, string password)

target = guid.newguid().tostring();  //使用臨時檔名

string uri = "ftp://" + hostname + "/" + targetdir + "/" + target;

///webclient webcl = new webclient();

system.net.ftpwebrequest ftp = getrequest(uri, username, password);

//設定ftp命令 設定所要執行的ftp命令,

= system.net.webrequestmethods.ftp.listdirectorydetails;//假設此處為顯示指定路徑下的檔案列表

ftp.method = system.net.webrequestmethods.ftp.uploadfile;

//指定檔案傳輸的資料型別

ftp.usebinary = true;

ftp.usepassive = true;

//告訴ftp檔案大小

ftp.contentlength = fileinfo.length;

//緩衝大小設定為2kb

const int buffersize = 2048;

byte content = new byte[buffersize - 1 + 1];

int dataread;

//開啟乙個檔案流 (system.io.filestream) 去讀上傳的檔案

using (filestream fs = fileinfo.openread())

while (!(dataread < buffersize));

rs.close();}}

catch (exception ex)

finally

}ftp = null;

//設定ftp命令

ftp = getrequest(uri, username, password);

ftp.method = system.net.webrequestmethods.ftp.rename; //改名

ftp.renameto = fileinfo.name;

trycatch (exception ex)

finally

// 可以記錄乙個日誌  "上傳" + fileinfo.fullname + "上傳到" + "ftp://" + hostname + "/" + targetdir + "/" + fileinfo.name + "成功." );

ftp = null;

#region

/*****

*ftpwebresponse

* ****/

//ftpwebresponse ftpwebresponse = (ftpwebresponse)ftp.getresponse();

#endregion 

}///

/// ftp目標檔案路徑

/// ftp位址即ip

/// ftp使用者名稱

/// ftp密碼

public static void downloadfile(string localdir, string ftpdir, string ftpfile, string hostname, string username, string password)

while (!(read == 0));

responsestream.close();

fs.flush();

fs.close();

}catch (exception)

}responsestream.close();

}response.close();

}try

catch (exception ex)

ftp = null;

}///

/// 搜尋遠端檔案

///

///

///

///

///

///

///

public static listlistdirectory(string targetdir, string hostname, string username, string password, string searchpattern)

catch

return null;

}private static string getstringresponse(ftpwebrequest ftp)

datastream.close();

}response.close();

}return result;

}/// 在ftp伺服器上建立目錄

///

/// 建立的目錄名稱

/// ftp位址

/// 使用者名稱

/// 密碼

public void makedir(string dirname, string ftphostip, string username, string password)

catch (exception ex)

}///

/// 刪除目錄

///

/// 建立的目錄名稱

/// ftp位址

/// 使用者名稱

/// 密碼

public void deldir(string dirname, string ftphostip, string username, string password)

catch (exception ex)

}///

/// 檔案重新命名

///

/// 當前目錄名稱

/// 重新命名目錄名稱

/// ftp位址

/// 使用者名稱

/// 密碼

public void rename(string currentfilename, string newfilename, string ftpserverip, string username, string password)

catch (exception ex)

}///

/// 向ftp伺服器上傳檔案並建立和本地相同的目錄結構

/// 遍歷目錄和子目錄的檔案

///

///

private void getfilesysteminfos(filesysteminfo file)

if (!file.exists) return; 

directoryinfo dire = file as directoryinfo;

if (dire == null) return;

filesysteminfo files = dire.getfilesysteminfos();

for (int i = 0; i < files.length; i++)

else

}else} }

///

/// 判斷ftp伺服器上該目錄是否存在

///

///

///

///

///

///

private bool ftpi***istsfile(string dirname, string ftphostip, string username, string password)

catch (exception)

return flag;}}

}

FTP伺服器上傳故障 排解

ftp伺服器搭建好以後要配置以下檔案 在預設情況下,預設的ftp目錄 是 var ftp目錄 這個目錄 其它使用者是沒有修改許可權的。如果用anonymous登入,修改了配置檔案vsftpd.conf還不能上傳,那可能就是許可權 了,以root使用者 chmod 777 var ftp pub 這樣...

java檔案上傳ftp伺服器

description 向ftp伺服器上傳檔案 version 1.0 param url ftp伺服器hostname param port ftp伺服器端口 param username ftp登入賬號 param password ftp登入密碼 param path ftp伺服器儲存目錄 p...

FTP伺服器上傳目錄修改 vsftps

預設配置下,登入vsftpd服務後的根目錄是 var ftp 系統使用者登入vsftpd服務後的根目錄是系統使用者的家目錄。若要修改登入 vsftpd 服務後的根目錄,只要修改 etc vsftpd vsftpd.conf 檔案即可 假設要把vsftpd 服務的登入根目錄調整為 vae www ht...