FTP方式实现上传下载功能
来源:互联网 发布:淘宝里卖家正在被处罚 编辑:程序博客网 时间:2024/06/13 10:54
- 1:FTP方式。通过在IIS里架设FTP服务器。代码
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Net;
- using System.IO;
- using System.Windows.Forms;
- namespace net.emice.TEST1
- {
- class FtpUpDown
- {
- string ftpServerIP;
- public string FtpServerIP
- {
- get { return ftpServerIP; }
- set { ftpServerIP = value; }
- }
- string ftpUserID;
- public string FtpUserID
- {
- get { return ftpUserID; }
- set { ftpUserID = value; }
- }
- string ftpPassword;
- public string FtpPassword
- {
- get { return ftpPassword; }
- set { ftpPassword = value; }
- }
- FtpWebRequest reqFTP;
- private void Connect(String path)//连接ftp
- {
- // 根据uri创建FtpWebRequest对象
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
- // 指定数据传输类型
- reqFTP.UseBinary = true;
- // ftp用户名和密码
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- }
- public FtpUpDown(string ftpServerIP, string ftpUserID, string ftpPassword)
- {
- this.ftpServerIP = ftpServerIP;
- this.ftpUserID = ftpUserID;
- this.ftpPassword = ftpPassword;
- }
- //都调用这个
- private string[] GetFileList(string path, string WRMethods)//上面的代码示例了如何从ftp服务器上获得文件列表
- {
- string[] downloadFiles;
- StringBuilder result = new StringBuilder();
- try
- {
- Connect(path);
- reqFTP.Method = WRMethods;
- WebResponse response = reqFTP.GetResponse();
- StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名
- string 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);
- reader.Close();
- response.Close();
- return result.ToString().Split('/n');
- }
- catch (Exception ex)
- {
- System.Windows.Forms.MessageBox.Show(ex.Message);
- downloadFiles = null;
- return downloadFiles;
- }
- }
- public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表
- {
- return GetFileList("ftp://" + ftpServerIP + "/" + path, WebRequestMethods.Ftp.ListDirectory);
- }
- public string[] GetFileList()//上面的代码示例了如何从ftp服务器上获得文件列表
- {
- return GetFileList("ftp://" + ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectory);
- }
- public string Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
- Connect(uri);//连接
- // 默认为true,连接不会被关闭
- // 在一个命令之后被执行
- reqFTP.KeepAlive = false;
- // 指定执行什么命令
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- // 上传文件时通知服务器文件的大小
- reqFTP.ContentLength = fileInf.Length;
- // 缓冲大小设置为kb
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- // 打开一个文件流(System.IO.FileStream) 去读上传的文件
- FileStream fs = fileInf.OpenRead();
- try
- {
- // 把上传的文件写入流
- Stream strm = reqFTP.GetRequestStream();
- // 每次读文件流的kb
- contentLen = fs.Read(buff, 0, buffLength);
- // 流内容没有结束
- while (contentLen != 0)
- {
- // 把内容从file stream 写入upload stream
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- // 关闭两个流
- strm.Close();
- fs.Close();
- return "";
- }
- catch (Exception ex)
- {
- return "Upload Error"+ex.Message;
- }
- }
- public string Download(string filePath, string fileName)////上面的代码实现了从ftp服务器下载文件的功能
- {
- try
- {
- String onlyFileName = Path.GetFileName(fileName);
- string newFileName = filePath + "//" + onlyFileName;
- if (File.Exists(newFileName))
- {
- return "本地文件" + newFileName + "已存在,无法下载";
- }
- string url = "ftp://" + ftpServerIP + "/" + fileName;
- Connect(url);//连接
- reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
- 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);
- FileStream outputStream = new FileStream(newFileName, FileMode.Create);
- while (readCount > 0)
- {
- outputStream.Write(buffer, 0, readCount);
- readCount = ftpStream.Read(buffer, 0, bufferSize);
- }
- ftpStream.Close();
- outputStream.Close();
- response.Close();
- return "";
- }
- catch (Exception ex)
- {
- return "因"+ex.Message+",无法下载";
- }
- }
- //删除文件
- public void DeleteFileName(string fileName)
- {
- try
- {
- FileInfo fileInf = new FileInfo(fileName);
- string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
- Connect(uri);//连接
- // 默认为true,连接不会被关闭
- // 在一个命令之后被执行
- reqFTP.KeepAlive = false;
- // 指定执行什么命令
- reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- response.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "删除错误");
- }
- }
- //创建目录
- public string MakeDir(string dirName)
- {
- try
- {
- string uri = "ftp://" + ftpServerIP + "/" + dirName;
- Connect(uri);//连接
- reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- response.Close();
- return "";
- }
- catch (WebException ex)
- {
- return "[Make Dir]"+ex.Message;
- }
- }
- //删除目录
- public void delDir(string dirName)
- {
- try
- {
- string uri = "ftp://" + ftpServerIP + "/" + dirName;
- Connect(uri);//连接
- reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- response.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- //获得文件大小
- public long GetFileSize(string filename)
- {
- long fileSize = 0;
- try
- {
- FileInfo fileInf = new FileInfo(filename);
- string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
- Connect(uri);//连接
- reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- fileSize = response.ContentLength;
- response.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- return fileSize;
- }
- //文件改名
- public void Rename(string currentFilename, string newFilename)
- {
- try
- {
- FileInfo fileInf = new FileInfo(currentFilename);
- string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
- Connect(uri);//连接
- reqFTP.Method = WebRequestMethods.Ftp.Rename;
- reqFTP.RenameTo = newFilename;
- FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
- //Stream ftpStream = response.GetResponseStream();
- //ftpStream.Close();
- response.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- //获得文件明晰
- public string[] GetFilesDetailList()
- {
- return GetFileList("ftp://" + ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectoryDetails);
- }
- //获得文件明晰
- public string[] GetFilesDetailList(string path)
- {
- return GetFileList("ftp://" + ftpServerIP + "/" + path, WebRequestMethods.Ftp.ListDirectoryDetails);
- }
- }
- }
转载自:http://blog.csdn.net/sminhrosunny/article/details/6556655
0 0
- FTP方式实现上传下载功能
- C#实现FTP上传下载功能
- LIBCURL实现FTP上传下载功能
- Java实现FTP上传下载功能
- Java实现FTP上传下载功能
- C#实现FTP上传下载功能
- Java实现FTP上传下载功能
- Java实现FTP上传下载功能
- Java实现FTP上传下载功能
- Java实现FTP上传下载功能
- FTP实现断点上传下载功能
- Java实现FTP上传下载功能
- apache ftp 实现上传下载功能
- Java实现ftp上传下载功能
- Java实现FTP的上传下载功能
- Ubuntu 10.04 ftp配置实现上传下载功能
- Java 实现FTP自动上传下载功能《一》
- FTP客户端--实现FTP文件的上传下载功能
- checkStyle配置说明、范例和结果分析
- bash: wget: command not found的解决办法
- 无限层级且乱序的树形结构数据的整理,利用HashMap减少遍历次数
- 字符串化操作符#,粘接附##,字符化操作符@#
- 【转】 LSD(Line Segment Detector) 直线段检测算法学习~
- FTP方式实现上传下载功能
- 抽象一个形状类
- 2014-6-9
- 转点东西
- 来个CSDN的处女作
- 又怎比得上日日朝夕相处的心情
- CSS浮动
- 小白自学Android路之 http协议
- Android 动态创建Android控件、绑定事件处理的新方法