2016-07-06 18 views
0

querystringから画像を表示することはできますか?base64からquerystring経由で画像を表示

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

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

、その後、私はエラー404.15ます

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

    } 

新しいウィンドウをポップアップ - 私がクエリ文字列にポストされたデータが長すぎるように思わ が見つかりませんでした:

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

だから、私はそれが不可能と思うbase64のデータをquerystringを介して転送します。

答えて

1

できます。しかし、あなたの例では値がその制限を変更するには2048のデフォルトの制限値を超えている2600バイト以上である、あなたは

3000があなたの限界である
<system.web> 
    <httpRuntime maxQueryStringLength="3000" /> 
</system.web> 
<system.webServer> 
    <security> 
    <requestFiltering> 
     <requestLimits maxQueryString="3000"/> 
    </requestFiltering> 
    </security> 
<system.webServer> 

以下のようにあなたのweb.configファイルを変更する必要があります。詳細については、How to configure the web.config to allow requests of any length

P.S.を確認することができます。 、

  1. あなたは文字列を取得し、文字列に戻って、その後は意味をなさない をバイトに変換し、:

    あなたのコードは、他のいくつかの問題を持っているようです。

  2. URL文字列がエンコードされます(たとえば、「+」は「」になります)
  3. Imageコントロールは自動的にImageUrl値をデコードし、特定のbase64文字列では機能しない可能性があります。次のよう

私はHtmlImage Server Control(つまり、値をデコードするべきではありません)の代わりに、ASP.NETコントロールを使用して、コードを変更しようとする:

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

... 

Image_Ramase = Request.QueryString["PtRamase"]; 
Image1.Src = "data:image/png;base64," + Image_Ramase.Replace(" ", "+"); 
+0

おかげで多くのことを.... –

関連する問題