|
服务器地址
192.168.0.1
服务器端口
80
服务器账户
administrator
服务器密码
admin
查询路径
MyFiles
查询文件
Ftp操作
------------------------------------------------------------
public partial class Test01 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnGet_Click(object sender, EventArgs e)
{
this.Bind();
}
private void Bind()
{
FtpHelper obj = null;
string[] data = null;
try
{
obj = new FtpHelper(
txtServer.Text.Trim(),
txtUid.Text.Trim(),
txtPwd.Text.Trim(),
int.Parse(txtPort.Text.Trim())
);
data = obj.GetFileList(
txtPath.Text.Trim()
);
gvShow.DataSource = data;
gvShow.DataBind();
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", string.Format("alert('发生异常,{0}')", ex.Message), true);
}
finally
{
obj = null;
}
}
protected void btnDown_Click(object sender, EventArgs e)
{
FtpHelper obj = null;
string[] data = null;
try
{
obj = new FtpHelper(
txtServer.Text.Trim(),
txtUid.Text.Trim(),
txtPwd.Text.Trim(),
int.Parse(txtPort.Text.Trim())
);
data = obj.GetFileList(
txtPath.Text.Trim()
);
if (data != null && data.Length > 0)
{
gvShow.DataSource = data;
gvShow.DataBind();
foreach (string filename in data)
{
obj.Download(
"MyFiles/MyFiles/",
filename,
"C:\\Documents and Settings\\Administrator\\桌面\\DownLoad\\",
"__" + filename
);
}
}
}
catch (Exception ex)
{
ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", string.Format("alert('发生异常,{0}')", ex.Message), true);
}
finally
{
obj = null;
}
}
}
------------------------------------------------------------
public class FtpHelper:IDisposable
{
private string ftpServerIP = "";
private string ftpUserID = "";
private string ftpPassword = "";
private int port = 80;
public void Dispose()
{
if (this != null)
{
this.ftpServerIP = this.ftpUserID = this.ftpPassword = null;
this.port = 0;
}
}
///
/// 打开Ftp文件路径
///
///
///
private System.Net.FtpWebRequest Connect(String path)//连接ftp
{
// 根据uri创建FtpWebRequest对象
System.Net.FtpWebRequest reqFTP = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(new Uri(path));
// 指定数据传输类型
reqFTP.UseBinary = true;
// ftp用户名和密码
reqFTP.Credentials = new System.Net.NetworkCredential(ftpUserID, ftpPassword);
return reqFTP;
}
///
/// 登陆连接Ftp服务器
///
/// 服务器IP
/// 服务器账户
/// 服务器密码
///
public FtpHelper(string ftpServerIP, string ftpUserID, string ftpPassword, int port)
{
this.ftpServerIP = ftpServerIP;
this.ftpUserID = ftpUserID;
this.ftpPassword = ftpPassword;
this.port = port;
}
///
/// 从ftp服务器上获得文件列表
///
/// 注意,参数是MyFiles/Test/,而非ftp://192.168.0.1/MyFiles/Test/
///
///
public string[] GetFileList(string path, string WRMethods)
{
string[] downloadFiles;
System.Text.StringBuilder result = new System.Text.StringBuilder();
System.Net.FtpWebRequest reqFTP = null;
System.Net.WebResponse response = null;
System.IO.StreamReader reader = null;
string line = "";
try
{
reqFTP = Connect(path);
reqFTP.Method = WRMethods;
response = reqFTP.GetResponse();
reader = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名
line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
// to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
downloadFiles = result.ToString().Split('\n');
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
downloadFiles = null;
}
finally
{
result = null;
if (reqFTP != null)
{
reqFTP = null;
}
if (response != null)
{
response.Close();
}
if (reader != null)
{
reader.Close();
}
}
return downloadFiles;
}
///
/// 从ftp服务器上获得文件列表
///
/// 注意,参数是MyFiles/Test/,而非ftp://192.168.0.1/MyFiles/Test/
///
public string[] GetFileList(string path)
{
return GetFileList("ftp://" + ftpServerIP + "/" + path, System.Net.WebRequestMethods.Ftp.ListDirectory);
}
///
/// 从ftp服务器上获得文件列表
///
///
public string[] GetFileList()
{
return GetFileList("ftp://" + ftpServerIP + "/", System.Net.WebRequestMethods.Ftp.ListDirectory);
}
///
/// 上面的代码实现了从ftp服务器下载文件的功能
///
/// Ftp路径:MyFiles/Test
/// Ftp文件:Test01.txt
/// 本地路径:C:\\Tmp\\
/// 保存名称:newFile.txt
///
public bool Download(string ftpFilePath, string ftpFileName, string clientFilePath, string clientFileName)
{
bool flag = false;
string clientfile = "";
string ftpfile = "";
string url = "";
System.Net.FtpWebRequest reqFTP = null;
System.Net.FtpWebResponse response = null;
System.IO.Stream ftpStream = null;
System.IO.FileStream outputStream = null;
long cl = 0;
int bufferSize = 2048;
int readCount;
byte[] buffer = null;
try
{
clientfile = clientFilePath + clientFileName;
ftpfile = ftpFilePath + ftpFileName;
if (System.IO.File.Exists(clientfile))
{
throw new Exception(string.Format("本地文件{0}已存在,无法下载", clientfile));
}
url = "ftp://" + ftpServerIP + "/" + ftpfile;
reqFTP = Connect(url);//连接
response = (System.Net.FtpWebResponse)reqFTP.GetResponse();
ftpStream = response.GetResponseStream();
cl = response.ContentLength;
buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
outputStream = new System.IO.FileStream(clientfile, System.IO.FileMode.Create);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
flag = true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
clientfile = null;
ftpfile = null;
url = null;
if (reqFTP != null)
{
reqFTP = null;
}
if (response != null)
{
response.Close();
}
if (ftpStream != null)
{
ftpStream.Close();
}
if (outputStream != null)
{
outputStream.Close();
}
if (buffer != null)
{
buffer = null;
}
}
return flag;
}
} |
|