1,上传。供新手参考
//文件上传地址根目录,这里通过IIS架设本地主机为FTP服务器
string FileSaveUri = @"ftp://服务器id/要上传的文件夹/";//服务器名以及要上传的文件夹名。
//FTP用户名密码
string ftpUser = "登录名";
string ftpPassWord = “密码";
Stream requestStream = null;
Stream fileStream = null;
FtpWebResponse uploadResponse = null;//创建FtpWebResponse实例uploadResponse
//Btn_Upload.
if (fupPhoto.HasFile)
{
//获取文件长度
int FileLength = fupPhoto.PostedFile.ContentLength;
//限制上传文件最大不能超过500M
if (FileLength < 512 * 1024 * 1024)
{
try
{
//格式化为URI
Uri uri = new Uri(FileSaveUri + Path.GetFileName(fupPhoto.PostedFile.FileName));
FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uri);//创建FtpWebRequest实例uploadRequest
//设置请求的方法是FTP文件下载
uploadRequest.KeepAlive = false;//这些小地方很重要。没有设置好可能会上传不成功
uploadRequest.UsePassive = false;
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;//将FtpWebRequest属性设置为上传文件
uploadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);//认证FTP用户名密码
requestStream = uploadRequest.GetRequestStream();//获得用于上传FTP的流
byte[] buffer = new byte[FileLength];
fileStream = fupPhoto.PostedFile.InputStream;//截取FileUpload获取的文件流,作为上传FTP的流
fileStream.Read(buffer, 0, FileLength);
requestStream.Write(buffer, 0, FileLength);//将buffer写入流
requestStream.Close();
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();//返回FTP服务器响应,上传完成
//上传成功
}
catch (Exception ex)
{
//无法上传
}
finally
{
if (uploadResponse != null)
uploadResponse.Close();
if (fileStream != null)
fileStream.Close();
if (requestStream != null)
requestStream.Close();
}
}//end if #FileLength#
else
{
//上传文件过大
}
}//end if #FileUpload.HasFile#
else
{
//未选择文件
}
2,下载
string filelrc = Page.MapPath("要保存的路径。我测试时是保存在根目录下某个文件夹下的");
string urllrc = @"ftp://服务器ip/要下载的文件所在的位置";
DownLoad(filelrc, urllrc);
private void DownLoad(string FileName, string url)
{
// string TempFolderPath =@"C:\song\";//本地保存目录
string FtpUserName = "用户名";
string FtpPassWord = "密码";
//创建一个文件流
FileStream fs = null;
Stream responseStream = null;
try
{
//创建一个与FTP服务器联系的FtpWebRequest对象
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(url));
//设置请求的方法是FTP文件下载
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.KeepAlive = false;
request.UsePassive = false;
//连接登录FTP服务器
request.Credentials = new NetworkCredential(FtpUserName, FtpPassWord);
//获取一个请求响应对象
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
// WebExceptionStatus.ConnectFailure;
//获取请求的响应流
responseStream = response.GetResponseStream();
//判断本地文件是否存在,如果存在,则打开和重写本地文件
if (File.Exists(FileName))
{
// fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite);
return;
}
//判断本地文件是否存在,如果不存在,则创建本地文件
else
{
fs = File.Create(FileName);
}
if (fs != null)
{
int buffer_count = 65536;
byte[] buffer = new byte[buffer_count];
int size = 0;
while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0)
{
fs.Write(buffer, 0, size);
}
fs.Flush();
fs.Close();
responseStream.Close();
}
}
finally
{
//Response.Write(response.StatusDescription);
if (fs != null)
fs.Close();
if (responseStream != null)
responseStream.Close();
}
}
3,创建目录
public void MakeDir(string dirName)
{
string ftpServerIP = @"服务器ip";
string ftpUserID = @"用户名";
string ftpPassword = @"密码";
try
{
string uri = "ftp://" + ftpServerIP + "/Photo/" + dirName;
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
// 指定数据传输类型
reqFTP.UseBinary = true;
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch (Exception ex)
{
}
}
4,删除
{
string uri = "ftp://服务器ip地址/文件路径";
try
{
//用户名密码
string FtpUserName = "用户名";
string FtpPassWord = "密码";
//创建一个与FTP服务器联系的FtpWebRequest对象
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(url));
//设置请求的方法是FTP文件删除
request.Method = WebRequestMethods.Ftp.DeleteFile;
request.KeepAlive = false;
request.UsePassive = false;
//连接登录FTP服务器
request.Credentials = new NetworkCredential(FtpUserName, FtpPassWord);
//获取一个请求响应对象
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();
}
catch (Exception ex)
{
Response.Write("<script>alert("+ex.Message+")</script>");
}
}