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
原创粉丝点击