C# Ftp文件处理
1.创建文件夹///
/// ftp创建文件夹(只能创建单层目录)
///
/// IP服务地址
/// 登陆账号
/// 密码
public static bool CreateDirectory(string Uri, string UserName, string UserPass)
{
try
{
FtpWebRequest FTP = (FtpWebRequest)FtpWebRequest.Create(Uri);
FTP.Credentials = new NetworkCredential(UserName, UserPass);
FTP.Proxy = null;
FTP.KeepAlive = false;
FTP.Method = WebRequestMethods.Ftp.MakeDirectory;
FTP.UseBinary = true;
FtpWebResponse response = FTP.GetResponse() as FtpWebResponse;
response.Close();
return true;
}
catch
{
return false;
}
}
注意 这个方法只能创建一层目录,如果要创建深层目录,只能迭代。
这个方法也可以用来判断某个目录是否存在(网上找了几个判断目录存在与否的方法,都有Bug,没解决掉)
如果文件夹已存在或者指定目录的父文件夹不存在,则抛出【远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。】
Ftp 读取文件到字符串中(下载)
public String readerFtpFile(String ftp, String username, String password, String filename)
{
StringBuilder result = new StringBuilder();
FtpWebRequest reqFTP;
try
{
String ftpserver = ftp + filename;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpserver));
reqFTP.UsePassive = false;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(username, password);
//reqFTP.Method?=?WebRequestMethods.Ftp.ListDirectory;
reqFTP.Method?=?WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse fwResponse = (FtpWebResponse)reqFTP.GetResponse();
StreamReader reader = new StreamReader(fwResponse.GetResponseStream(),Encoding.UTF8);
string line = reader.ReadLine();
while (line != null)
{
result.AppendLine(line);
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf('\n'), 1);
reader.Close();
fwResponse.Close();
return result.ToString();
}
catch (Exception ex)
{
return result.ToString();
}
}
Ftp 文件上传:
string url = string.Format("ftp://{0}/{1}/{2}", FtpIP, UploadPath,fileName);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential(FtpUserName, FtpPwd);
request.Proxy = null;
request.Method = WebRequestMethods.Ftp.UploadFile;
Stream stream = request.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
stream.Close();
注意这一句因为公司都是代理上网,所以如果不加这句话,就会报错误【使用 HTTP 代理时不支持请求的 FTP 命令。】
还有一点就是 ftp地址必须使用内网IP,而不是外网IP,否则会出现错误【无法解析此远程名称】
页:
[1]