1: public class FileDownload : IHttpHandler
2: {
3:
4: public void ProcessRequest(HttpContext context)
5: {
6: string url = "ftp://FTPSERVER" + @"/" + context.Request.QueryString["Action"];
7:
8: FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
9: ftpRequest.Credentials = new NetworkCredential("UserID", "Password");
10: ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
11:
12: try
13: {
14: FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
15: Stream stream = ftpResponse.GetResponseStream();
16: byte[] bytes = new byte[2048];
17: int byteL = 0;
18:
19: using (MemoryStream mStream = new MemoryStream())
20: {
21: do
22: {
23: byteL = stream.Read(bytes, 0, bytes.Length);
24: mStream.Write(bytes, 0, byteL);
25: }
26: while (byteL != 0);
27:
28: context.Response.Clear();
29: context.Response.ClearHeaders();
30: context.Response.ClearContent();
31: context.Response.ContentType = "application/octet-stream";
32: context.Response.AddHeader("Content-Disposition", "attachment;filename=" + context.Request.QueryString["Action"]);
33: context.Response.BinaryWrite(mStream.GetBuffer());
34: }
35: }
36: catch
37: {
38: }
39: }
40:
41: public bool IsReusable
42: {
43: get
44: {
45: return false;
46: }
47: }
48: }