设为首页 收藏本站
查看: 1055|回复: 0

[经验分享] 基于Fileupload控件的FTP上传

[复制链接]

尚未签到

发表于 2015-11-6 10:47:22 | 显示全部楼层 |阅读模式
  调用页面:先放一个FileUpload控件:
  string filename = chdFtp.UniqueName(FileUpload1.FileName);chdFtp one = new chdFtp(filename, FileUpload1.PostedFile.InputStream);    //Fileupload的文件PostedFile的返回流InputStreambool ftpUpdateFlag = one.UploadVideo();
  类库:
  using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets;using System.IO;using System.Threading;namespace CHDFTP{/*Coder:MarkTime:2011.04.28描述:实现FTP上传,删除,主要用到两个Stream流,_localfile获得上传文件的对象,_uploadstream创建FTP上传流,对应FtpWebRequest.GetRequestStream();实际操作是uploadRequest.GetResponse()方法;*/public class chdFtp{const int _bufferLength = 2048;   //2K缓冲区byte[] Buffer = new byte[_bufferLength];int contentLen = 0;private string _ftpserverip = ConfigurationManager.AppSettings["ServerIP"].ToString();private string _ftpvideoid = ConfigurationManager.AppSettings["FtpID"].ToString();private string _ftpvideopwd = ConfigurationManager.AppSettings["FtpPwd"].ToString();private string _fileName;private FtpWebRequest uploadRequest = null;private FtpWebResponse uploadRespose = null;Stream _localfile = null;Stream _uploadstream = null;public chdFtp(string fileName){this._fileName = fileName;}public chdFtp(string fileName,Stream fs){this._fileName = fileName;this._localfile = fs;}public bool UploadVideo(){uploadRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(string.Format(@"ftp://{0}/{1}", _ftpserverip, _fileName))); //设定上传文件的路径与文件名,默认是FTP根目录uploadRequest.Credentials = new NetworkCredential(_ftpvideoid, _ftpvideopwd);    //提供账号密码的验证uploadRequest.KeepAlive = false;    //默认为true是上传完后不会关闭FTP连接uploadRequest.ReadWriteTimeout = 300000;   //默认300000ms,5分钟uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;uploadRequest.UseBinary = true;    //默认true,表示传输文件是二进制流,false表示是文本文档。try{_uploadstream = uploadRequest.GetRequestStream();do{contentLen = _localfile.Read(Buffer, 0, _bufferLength);_uploadstream.Write(Buffer, 0, contentLen);} while (contentLen != 0);_uploadstream.Close(); //必须先关闭stream流才可以进行上传。uploadRespose = (FtpWebResponse)uploadRequest.GetResponse();}catch (UriFormatException ex){return false;}catch (IOException ex){return false;}catch (WebException ex){return false;}finally{if (uploadRespose != null)uploadRespose.Close();if (_localfile != null)_localfile.Close();if (_uploadstream != null)_uploadstream.Close();}return true;  }public bool DeleteVideo(){uploadRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(string.Format(@"ftp://{0}/{1}", _ftpserverip, _fileName)));uploadRequest.Credentials = new NetworkCredential(_ftpvideoid, _ftpvideopwd);    //提供账号密码的验证uploadRequest.KeepAlive = false;    //默认为true是上传完后不会关闭FTP连接uploadRequest.Method = WebRequestMethods.Ftp.DeleteFile;try{uploadRespose = (FtpWebResponse)uploadRequest.GetResponse();}catch (UriFormatException ex){return false;}catch (IOException ex){return false;}catch (WebException ex){return false;}finally{if (uploadRespose != null)uploadRespose.Close();if (_localfile != null)_localfile.Close();if (_uploadstream != null)_uploadstream.Close();}return true;}public static string UniqueName(string fileName){string GUID = Guid.NewGuid().ToString();string extensionName = Path.GetExtension(fileName);GUID += extensionName;return GUID;}
  
  因为编译为类库,所以需要在web.config中的AppSettings节插入字段"ServerIP"表示IP地址,“FtpID”表示登录账户,“FtpPwd"表示登录密码。也可以直接按普通类进行调用,自己修改代码传入参数。需要优化的地方就是还未进行异步调用
             版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135808-1-1.html 上篇帖子: C# FTP 各种操作 下篇帖子: C# FTP 文件 文件夹操作 上传 下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表