在uri路径中读取流到图像控制错误

时间:2010-12-06 00:01:09

标签: c# asp.net c#-4.0 ftp

嘿试图将流读入图像控制可以帮助我在处理程序页面中也有一些错误。

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();
    // want to output to image control upon selection of gridview
    //using (System.Drawing.Image img = System.Drawing.Image.FromStream(resStream))
    //{
    //    img.Save("temp.jpg", ImageFormat.Jpeg);
    //}

}

}

我收到错误值不能为空。 参数名称:uriString

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)); 
// error is here -------------------
        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;
    }
}

}

1 个答案:

答案 0 :(得分:1)

正如我之前解释的那样,您需要在<img>标记中设置网址,以便在查询字符串中包含PhotoPath