1: [WebMethod]
2: public void DownloadFile(string fileName)
3: {
4: HttpContext returnContext = HttpContext.Current;
5: string url = "http://localhost" + @"/" + fileName;
6:
7: FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
8: ftpRequest.Credentials = new NetworkCredential(UserId, UserPassword);
9: ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
10:
11: using (FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse())
12: {
13:
14: using (Stream stream = ftpResponse.GetResponseStream())
15: {
16:
17: returnContext.Response.Clear();
18: returnContext.Response.ClearHeaders();
19: returnContext.Response.ClearContent();
20: returnContext.Response.ContentType = "application/octet-stream";
21: returnContext.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
22:
23: byte[] bytes = new byte[8192];
24: int bytesRead = 0;
25:
26: while ((bytesRead = stream.Read(bytes, 0 , bytes.Length)) > 0 )
27: {
28: returnContext.Response.OutputStream.Write(bytes, 0, bytesRead);
29: }
30: }
31: }
32: }