ASP.NET实现FTP上传文件
类别:编程学习 浏览量:2134
时间:2013-10-20 ASP.NET实现FTP上传文件
ASP.NET实现FTP上传文件ASP.NET实现的方式是:建立一个 FtpWebRequest 的实例,将IP、端口号、用户名、密码、数据、上传路径、上传文件等等复制给该实例,然后检查服务上是否有该目录,如果没有,就依次创建该目录,最后通过 FtpWebRequest 的实例的 GetRequestStream 方法远程上传文件。
其实现代码为:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Net; namespace FTPNS { public class FTPClass { private string Host='';//FTP主机IP private string Port='';//FTP主机端口号 private string UserName='';//FTP主机登录用户名 private string Userpwd='';//FTP主机登录密码 private string UploadData='';//FTP上传数据 private string RemoteFileName='';//FTP上传文件名 private string RemoteDir='';//FTP上传目录 /// <summary> /// 创建FTP目录 /// </summary> public static void MakeFTPDirectory() { FtpWebRequest req; FtpWebResponse response=null; req = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Host + ":" + Port + "/" + RemoteDir));//初始化ftp目标 req.Credentials = new NetworkCredential(UserName, Userpwd); req.Method = WebRequestMethods.Ftp.ListDirectory; bool bDirExists = true ; try { response = req.GetResponse() as FtpWebResponse; } catch { bDirExists = false; } finally { if (response != null) response.Close(); } if (bDirExists ) { return } string[] dirList = RemoteDir.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); string curDir = "/"; for (int i = 0; i < dirList.Length; i++) { string dir = dirList[i]; // 如果是以/开始的路径,第一个为空 if (dir != null && dir.Length > 0) { curDir += dir + "/"; req = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Host + ":" + Port + "/" + curDir)); req.Credentials = new NetworkCredential(UserName, Userpwd); req.Method = WebRequestMethods.Ftp.MakeDirectory; try { response = req.GetResponse() as FtpWebResponse; } catch { } finally { if(response !=null ) response.Close(); } } } } public static void FTPUploadFile() { try { MakeFTPDirectory(); string serverPath = "ftp://" + Host + ":" + Port + "/" + RemoteDir.Replace ('\\\\','/'); if (!serverPath.EndsWith("/")) serverPath += "/"; serverPath += RemoteFileName; FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(new Uri(serverPath )); req.Method = WebRequestMethods.Ftp.UploadFile; req.UseBinary =true; req.Credentials = new NetworkCredential(UserName, Userpwd);// 登录凭证 req.ContentLength = UploadData.Length; int bufferSize = 4096; int length; byte[] buffer = new byte[bufferSize]; int seek = 0; // 将文件流存在FileStream中 using (MemoryStream fs = new MemoryStream(UploadData)) { // 上传流指向Stream using (Stream stream = req.GetRequestStream()) { // 读取文件流中最大长度为bufferSize字节内容至buffer,读取长度返回至length length = fs.Read(buffer, 0, bufferSize); // 如果读取到了内容 while (length != 0) { //buffer写入上传流 stream.Write(buffer, 0, length); seek += length; //继续读取 length = fs.Read(buffer, 0, bufferSize); } } } FtpWebResponse response = req.GetResponse() as FtpWebResponse; response.Close(); } catch (Exception e) { } } } }
您可能感兴趣
- ASP.NET中XML与DataSet的相互转换
- asp.net 参数化like模糊查询
- ASP.NET合并两个相关联的DataTable
- ASP.NET压力测试
- asp.net如何实现word文档在线预览
- asp.net判断上传文件格式
- ASP.NET windows服务调试
- ASP.NET mvc异常处理的方法
- 2013-12-25
- asp.net文件下载的方法
- ASP.NET中使用CodeDomProvider调用js文件中的js方法
- asp.net把word文档转换成pdf
- ASP.NET匿名类型var
- netcorelinux后台运作(Linux系统Docker 部署 ASP.NET Core应用的流程分析)
- ASP.NET自定义分页类
- ASP.NET压缩图片
- 阿里最新财报公布 三季度营收增长3 ,将增加150亿美元回购额度 在美股价小涨(阿里最新财报公布)
- 赵薇时胖时瘦 最近变美少女 原因在这里 躺着就变瘦(赵薇时胖时瘦最近变美)
- 学会这26种姿势,你就可以和兵哥哥切磋了(你就可以和兵哥哥切磋了)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
- 痴情男神 吴彦祖 与妻子恋爱8年,结婚10年,家庭幸福美满(痴情男神吴彦祖)
- 成功破圈,小牛电动SQi强势开 跨(小牛电动SQi强势开)