private void DownFileFromFTP(string url,string filename,string username, string password) { FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp:" + url); req.Method = WebRequestMethods.Ftp.DownloadFile; req.UseBinary = true; req.UsePassive = true; req.Credentials = new NetworkCredential(username, password); try { using (FtpWebResponse res = (FtpWebResponse)req.GetResponse()) { Stream stream = res.GetResponseStream(); int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; // FileStream outputStream = new FileStream(@"D:" + filename, FileMode.Create); var memoryStream = new MemoryStream(); readCount = stream.Read(buffer, 0, bufferSize); while (readCount > 0) { memoryStream.Write(buffer, 0, readCount); readCount = stream.Read(buffer, 0, bufferSize); } DownLoad(memoryStream, filename); stream.Close(); memoryStream.Close(); res.Close(); } } catch (Exception ex) { Response.Write("<script>alert('文件不存在!');</script>"); } finally { } }
页面输出下载文件。
public void DownLoad(System.IO.MemoryStream memoryStram, string fileName) { //设置输出编码格式 Response.ContentEncoding = System.Text.Encoding.UTF8; //设置输出流 Response.ContentType = "application/octet-stream"; //防止中文乱码 fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8); //设置输出文件名 Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName); //输出 Response.BinaryWrite(memoryStram.GetBuffer()); }