0

データベース (SQlServer 2008 R2) の varbinary 列に画像があります。私のレポートは、Visual Studio 2010 の ASP.net 3.5 で開発されています。表のレポートで、画像を使用し、MIME タイプを image/jpeg に設定し、画像ソースをデータベースとして設定すると、画像がレポートに正しく表示されます。すべてが機能します!! 今私の問題は、その画像にハイパーリンクを追加して、ユーザーが画像をクリックすると、別のウィンドウ/タブで元の形式で開くようにしたいということです。これにより、ユーザーは画像をより詳しく見ることができます。ハイパーリンクを追加しようとしました-URLに移動-式

="http://localhost:49170/MtkMobileDeposit_FailedTransaction/Account/ReportByUserName.aspx?BackImageOriginal=" & フィールド!BackImageOriginal.Value

しかし、画像だけを表示することはできません。代わりに、レポート全体が新しいタブに表示されます。最初に画像の URL を取得するにはどうすればよいですか? 助けてください。

ありがとう、sdd

4

1 に答える 1

1

最善の策は、httphandler を使用してリクエストを処理することです。

レコード ID を受け取る ImageHandler.ashx を作成します。次に、画像のバイト配列を取得して、画面に出力できます。

新しい URL は次のようになります

"/ImageHandler.ashx?Record_ID=" & フィールド!RecordId.Value

public class ImageHandler : IHttpHandler
{

    public int Record_ID
    {
        get { return Convert.ToInt32(HttpContext.Current.Request.QueryString["Record_ID"]); }

    }

    public void ProcessRequest(HttpContext context)
    {
        // get image from database into a byte array
        Component.ImageController objImageController = new Component.ImageController();
        Component.ImageInfo objImageInfo = objImageController.getImage(Record_ID);
        byte[] byteArray = objImageInfo.photo;

        // output it to the screen
        context.Response.Clear();
        context.Response.ContentType = "image/jpeg";
        context.Response.BinaryWrite(byteArray);

        context.ApplicationInstance.CompleteRequest();

    }



    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
于 2012-03-20T21:06:22.910 に答える