0

Is it possible to display image from querystring ?

my code is like this:

  <dx:GridViewDataTextColumn VisibleIndex="12" Width="7px">
            <DataItemTemplate>
                <asp:HyperLink ID="link" runat="server"  Target="_blank" OnInit="link_Photo">Photo</asp:HyperLink>
            </DataItemTemplate>
        </dx:GridViewDataTextColumn>

and in cs.

protected void link_Photo(object sender, EventArgs e)
    {
        HyperLink link = sender as HyperLink;
        GridViewDataItemTemplateContainer container = link.NamingContainer as GridViewDataItemTemplateContainer;

        link.NavigateUrl = String.Format("Print_Photo.aspx?PtRamase={0}&PtLivre={1}", DataBinder.Eval(container.DataItem, "PHOTO_RAMASE"), DataBinder.Eval(container.DataItem, "PHOTO_LIVRER"));
    }

and then i pop up new window

      <dx:ASPxImage ID="ASPxImage_Ramase" runat="server">
            </dx:ASPxImage>

 public string Image_Ramase = "", Image_Livre = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            Image_Ramase = Request.QueryString["PtRamase"];
            Image_Livre = Request.QueryString["PtLivre"];

            var bytes = Encoding.UTF8.GetBytes(Image_Ramase);
            var base64String = Convert.ToBase64String(bytes);
            ASPxImage_Ramase.ImageUrl = "data:image/png;base64," + base64String;
        }
        catch (Exception ex)
        {
            ASPxLabel_Err.Text = ex.Message;
        }

    }

I get error 404.15 - Not Found it seems that the data that I posted in querystring is too long:

Print_Photo.aspx?PtRamase=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%22&PtLivre=

so i think it not possible transfer the base64 data via querystring.

ElGavilan
  • 6,610
  • 16
  • 27
  • 36
Soft8 Stev
  • 63
  • 7

1 Answers1

1

You can. However, the value in your example is over 2600 bytes which is more than the default limit of 2048. To change that limit, you need to modify your web.config as below

<system.web>
    <httpRuntime maxQueryStringLength="3000" />
</system.web>
<system.webServer>
   <security>
    <requestFiltering>
      <requestLimits maxQueryString="3000"/>
    </requestFiltering>
  </security>
<system.webServer>

where 3000 is your limit. For more information, you could check How to configure the web.config to allow requests of any length

P.S.

Your code seems to have some other issues:

  1. you get a string, convert it to bytes and then back to string, which makes no sense.
  2. the url string will be encoded (e.g. "+" becomes " ")
  3. the Image control will automatically decode its ImageUrl value and it might not work on certain base64 strings.

I would try to use an HtmlImage Server Control (that should not decode values) instead of ASP.NET Control and modify the code as follows:

<img id="Image1" runat="server" />

...

Image_Ramase = Request.QueryString["PtRamase"];
Image1.Src = "data:image/png;base64," + Image_Ramase.Replace(" ", "+");
Community
  • 1
  • 1
user2316116
  • 6,726
  • 1
  • 21
  • 35