asp.net实现ftp上传代码(解决大文件上传问题)
来源:互联网 发布:淘宝借贷逾期 编辑:程序博客网 时间:2024/04/19 20:20
usingSystem; usingSystem.Configuration; usingSystem.Data; usingSystem.Linq; usingSystem.Web; usingSystem.Web.Security; usingSystem.Web.UI; usingSystem.Web.UI.HtmlControls; usingSystem.Web.UI.WebControls; usingSystem.Web.UI.WebControls.WebParts; usingSystem.Xml.Linq; usingSystem.IO; usingSystem.Net; usingSystem.Text; publicpartial class _Default : System.Web.UI.Page { //以下字段配置在web.config privatestring ftpServerIP = "127.0.0.1";//服务器ip privatestring ftpUserID = "FTPTEST";//用户名FTPTEST privatestring ftpPassword = "ftptest";//密码 protectedvoid Page_Load(objectsender, EventArgs e) { if(MyFile.Value != "") { //string a = MyFile.; } } //ftp的上传功能 privatevoid Upload(stringfilename) { FileInfo fileInf = newFileInfo(filename); stringuri = "ftp://"+ ftpServerIP + "/"+ fileInf.Name; FtpWebRequest reqFTP; // 根据uri创建FtpWebRequest对象 reqFTP = (FtpWebRequest)FtpWebRequest.Create(newUri("ftp://"+ ftpServerIP + "/"+ fileInf.Name)); // ftp用户名和密码 reqFTP.Credentials = newNetworkCredential(ftpUserID, ftpPassword); // 默认为true,连接不会被关闭 // 在一个命令之后被执行 reqFTP.KeepAlive = false; // 指定执行什么命令 reqFTP.Method = WebRequestMethods.Ftp.UploadFile; // 指定数据传输类型 reqFTP.UseBinary = true; // 上传文件时通知服务器文件的大小 reqFTP.ContentLength = fileInf.Length; // 缓冲大小设置为2kb intbuffLength = 2048; byte[] buff = newbyte[buffLength]; intcontentLen; // 打开一个文件流 (System.IO.FileStream) 去读上传的文件 FileStream fs = fileInf.OpenRead(); try { // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream(); // 每次读文件流的2kb 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(); this.Page.RegisterStartupScript("", "<script>alert('成功')</script>"); } catch(Exception ex) { // MessageBox.Show(ex.Message, "Upload Error"); Response.Write("Upload Error:" + ex.Message); } } //从ftp服务器上下载文件的功能 privatevoid Download(stringfilePath, stringfileName) { FtpWebRequest reqFTP; try { FileStream outputStream = newFileStream(filePath + "\\"+ fileName, FileMode.Create); reqFTP = (FtpWebRequest)FtpWebRequest.Create(newUri("ftp://"+ ftpServerIP + "/"+ fileName)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; reqFTP.Credentials = newNetworkCredential(ftpUserID, ftpPassword); FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream ftpStream = response.GetResponseStream(); longcl = response.ContentLength; intbufferSize = 2048; intreadCount; byte[] buffer = newbyte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while(readCount > 0) { outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); } ftpStream.Close(); outputStream.Close(); response.Close(); } catch(Exception ex) { Response.Write("Download Error:" + ex.Message); } } //从ftp服务器上获得文件列表 publicstring[] GetFileList() { string[] downloadFiles; StringBuilder result = newStringBuilder(); FtpWebRequest reqFTP; // HttpWebRequest reqFTP; try { reqFTP = (FtpWebRequest)FtpWebRequest.Create(newUri("ftp://"+ ftpServerIP + "/")); reqFTP.UseBinary = true; reqFTP.Credentials = newNetworkCredential(ftpUserID, ftpPassword); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; WebResponse response = reqFTP.GetResponse(); StreamReader reader = newStreamReader(response.GetResponseStream()); stringline = 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(); returnresult.ToString().Split('\n'); } catch(Exception ex) { downloadFiles = null; returndownloadFiles; } } protectedvoid Button1_Click(objectsender, EventArgs e) { Upload("F:\\美国队长DVD中字.rmvb"); } protectedvoid Button2_Click(objectsender, EventArgs e) { } }
0 0
- asp.net实现ftp上传代码(解决大文件上传问题)
- asp.net实现ftp上传代码(解决大文件上传问题)
- asp.net实现ftp上传代码(解决大文件上传问题)
- asp.net实现ftp上传代码(解决大文件上传问题)
- ASP.NET如何实现FTP上传文件
- asp.net 实现FTP上传
- ASP.NET大文件上传的问题
- ASP.NET上传大文件
- ASP.NET上传大文件
- asp.net 上传大文件
- ASP.NET上传大文件
- asp.net大文件上传
- ASP.NET大文件上传
- asp.net 大文件上传
- asp.net 大文件上传
- commons-net FTP大文件上传
- asp.net上传文件代码
- ASP.NET上传文件代码
- libevent笔记-事件/事件循环
- 《泛型编程与STL》读书笔记
- Spring MVC国际化配置
- Java中设计模式——装饰类(传智播客毕老师视频讲解)
- heapSort之应用
- asp.net实现ftp上传代码(解决大文件上传问题)
- 复习pdo,插入,查询
- USACO 刷水
- 说“无法对数据库'Alarm'执行删除,因为它正用于复制”
- hive表数据导出到csv乱码原因及解决方案
- 1412202059-hpu-1005:C语言考试练习题_排列
- qt组直方图例子-qwt
- 萨法司法所分
- 主机centos7系统与VBOX下的XP系统实现文件共享