查询字符串到处理程序页面

G G*_* Gr 2 c# asp.net http c#-4.0

如何创建从database.aspx 页面上的photopath 到handler.ashx 页面的查询字符串。

我希望处理程序页面能够获取此处包含的光路径字符串:

        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);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 GetImage.ashx 处理程序页面中检索它:

    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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ner 5

在 Web 应用程序端(您的事件处理程序),只需将您的 url 设置为类似以下内容即可。

http://myserver/GetImage.ashx?PhotoPath=\\photoserver\item.gif
Run Code Online (Sandbox Code Playgroud)

在 Http 处理程序代码中,您只需从方法HttpContext的参数中读取它ProcessRequest,如下所示。

string path = context.Request.QueryString["PhotoPath"];
Run Code Online (Sandbox Code Playgroud)