title: query string to handler page
body: <p>How do I create a query string from photopath on my database.aspx page to my handler.ashx page.</p>
  
  <p>I want the handler page to pick up on my photopath string contained here:</p>
  
  <pre><code>        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
      {
      protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
      {
          string PhotoPath;
  
          GridViewRow row = GridView1.Rows[GridView1.SelectedIndex];
  
          PhotoPath = row.Cells[5].Text;
          PhotoPath = HttpUtility.UrlEncode(PhotoPath);
  
          HttpWebRequest request = (HttpWebRequest)
              WebRequest.Create(PhotoPath);
          HttpWebResponse response = (HttpWebResponse)
                  request.GetResponse();
          Stream resStream = response.GetResponseStream();
          using (System.Drawing.Image img = System.Drawing.Image.FromStream(resStream))
          {
              img.Save("temp.jpg", ImageFormat.Jpeg);
          }
  
      }
  }
  </code></pre>
  
  <p>and then to retrieve it in my GetImage.ashx handler page here:</p>
  
  <pre><code>    public class GetImage : IHttpHandler
      {
  
          public void ProcessRequest(HttpContext context)
          {
              {
              string PhotoPath = System.Web.HttpContext.Current.Request.QueryString["PhotoPath"];
              PhotoPath = HttpUtility.UrlDecode(PhotoPath);
              FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(PhotoPath));
              request.Method = WebRequestMethods.Ftp.DownloadFile;    
              request.Credentials = new NetworkCredential("Administrator", "commando");
  
              try
              {
                  FtpWebResponse response = (FtpWebResponse)request.GetResponse();
  
                  Stream stream = response.GetResponseStream();
                  byte[] bytes = new byte[2048];
  
                  int i = 0;
                  MemoryStream mStream = new MemoryStream();
  
                  do
                  {
  
                      i = stream.Read(bytes, 0, bytes.Length);
  
                      mStream.Write(bytes, 0, i);
                  } while (i != 0);
  
                  context.Response.Clear();
                  context.Response.ClearHeaders();
                  context.Response.ClearContent();
                  context.Response.ContentType = "image/jpeg";
                  context.Response.BinaryWrite(mStream.GetBuffer());
  
              }
              catch (WebException wex)
              {
  
                  //throw new Exception("Unable to locate or access your file.\\nPlease try a different file.");
  
              }
              catch (Exception ex)
              {
                  throw new Exception("An error occurred: " + ex);
  
              }
  
          }
      }
  
      public bool IsReusable
      {
          get
          {
              return false;
          }
      }
  }
  </code></pre>