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合并两个相关联的DataTable
- 发送邮件的asp.net代码
- ASP.NET函数返回多个值的几种方法
- ASP.NET cache缓存的用法
- asp.net func 委托
- asp.net如何实现word文档在线预览
- ASP.NET压力测试
- Asp.net页面传值乱码
- asp.net判断上传文件格式
- ASP.NET SignalR是什么
- ASP.NET常见面试题
- ASP.NET将Excel数据导入到数据库
- asp.net 参数化like模糊查询
- asp.net lambda表达式
- ASP.NET中application对象的用法
- ASP.NET参数化模糊查询
- 马来西亚旅游攻略(马来西亚旅游攻略自由行攻略)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
- 《庆余年2》新消息,原班人马,肖战特别出演,这才是最好的安排(庆余年2新消息原班人马)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
- 寒假余额不满24小时,不如来一场说走就走的亲子阅读之旅(寒假余额不满24小时)
热门推荐
- sql语句的groupby是做什么的(深入浅析SQL中的group by 和 having 用法)
- python如何遍历一个列表(说说如何遍历Python列表的方法示例)
- c# 注册表操作
- php在没有命名空间之前是怎么调(php命名空间设计思想、用法与缺点分析)
- linux hadoop client 连接hbase(使用docker部署hbase的方法)
- mysql字符串截取字段(MySQL如何从不固定位置提取字符串元素详解)
- sqlserver复制表结构及数据到新表(SQL SERVER 表与表之间 字段一对多sql语句写法)
- django环境变量菜鸟教程(Django 多环境配置详解)
- 自己做的弹珠小游戏(JS实现简单打砖块弹球小游戏)
- docker执行shell脚本(基于Docker搭建ELK 日志系统的方法)