1 ftp (File Transfer Protocol): 文件传输协议
2 原理: 基于TCP生成虚拟连接信息控制器(账户,密码,权限),再另外基于tcp生成文件传输控制器。
3 开发基础知识
下载:将文件从其他的远程主机(服务器)复制到本地计算机的过程
上传:将本地文件复制到远程主机(服务器)的过程
a URL ,URI,URN
URL 统一资源定位符
URL格式 :scheme://host.port/path?#fragament
URI :统一资源标识符
URN:统一资源名称
b 用的类
文件:
Fileinfo ,FileStream,Stream,NetwokStream ,StreamReader
网络:WebCilent RequestWeb ,WebResponse, FtpWebRequest
c 下载文件和上传文件的过程
上传
//上传文件
public void UpLoad(string pathname) {
FileInfo finf = new FileInfo(pathname);
//实现文件传输协议
FtpWebRequest reqftp;
reqftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp:\\"+ftpserverIP+"/"+pathname));
//创建通信凭证
reqftp.Credentials = new NetworkCredential(uname,upwd);
//去掉包活技术
reqftp.KeepAlive = false;
//为上传的方法
reqftp.Method = WebRequestMethods.Ftp.UploadFile;
reqftp.UseBinary = true;
//设置上传文件的大小
reqftp.ContentLength = finf.Length;
int buffer = 2048;
byte [] dat=new byte[buffer];
int contentlent;
//上传数据
FileStream fs = finf.OpenRead();
try
{
Stream strm = reqftp.GetRequestStream();
//读取数据流
contentlent = fs.Read(dat, 0, buffer);
while (contentlent != 0)
{
strm.Write(dat,0,contentlent);
contentlent = fs.Read(dat, 0, buffer);
}
//结束关闭数据流
strm.Close();
fs.Close();
}
catch (IOException ioe)
{
MessageBox.Show(ioe.Message+"文件上传出错");
}
}
下载
//下载文件
public void DownLoad(string select,string fname) {
FtpWebRequest reqftp;
try
{
FileStream output = new FileStream(fname, FileMode.Create);
reqftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://"+ftpserverIP+"/"+fname));
reqftp.Method = WebRequestMethods.Ftp.DownloadFile;
reqftp.UseBinary = true;
reqftp.Credentials = new NetworkCredential(uname,upwd);
//响应数据
FtpWebResponse response = (FtpWebResponse)reqftp.GetResponse();
Stream ftpstream = response.GetResponseStream();
long cl = response.ContentLength;
int buffersize = 2048;
int readcount;
byte[] buffer = new byte[buffersize];
readcount = ftpstream.Read(buffer,0,buffersize);
//继续读取数据
while (readcount > 0)
{
output.Write(buffer,0,readcount);
readcount = ftpstream.Read(buffer, 0, buffersize);
}
//关闭数据流
output.Close();
ftpstream.Close();
}
catch(Exception e) {
}
}