2012-03-20 2 views
0

varbinary 열의 데이터베이스 (SQlServer 2008 R2)에 이미지가 있습니다. 내 보고서는 Visual Studio 2010의 ASP.net 3.5에서 개발되었습니다. 보고서의 표에서 이미지를 사용하여 MIME 형식을 image/jpeg로 설정하고 이미지 원본을 데이터베이스 &으로보고 이미지가 보고서에 올바르게 표시됩니다. 모든 것이 작동합니다! 이제 내 문제는 그 이미지에 하이퍼 링크를 추가하여 사용자가 이미지를 클릭하면 다른 창/탭에서 원래 형식으로 열립니다. 이렇게하면 사용자가 이미지를 자세히 볼 수 있습니다. URL로 이동 - - 내가 하이퍼 링크를 추가하려고 표현RDLC 보고서 뷰어 컨트롤 - 다른 창/탭에서 이미지를 여는 방법

=! "HTTP : // 로컬 호스트 : 49170/MtkMobileDeposit_FailedTransaction/계정/ReportByUserName.aspx BackImageOriginal ="& 필드 BackImageOriginal.Value

하지만 그럴 수 없어 이미지 만 표시하도록하십시오. 대신 전체 보고서를 새 탭에 표시합니다. 이미지의 URL이 먼저 작동하려면 어떻게해야합니까? 도와주세요.

감사합니다, SDD

답변

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

감사를 찾을 것입니다. httpHandler를 만들었습니다. ashx 파일 (예 : http : // localhost : 49170/MtkMobileDeposit_FailedTransaction/Account/ReportByUserName.aspx/ImageHandler.ashx? ID = "& Fields! ID.Value)을 가리 키도록 보고서 내 URL 링크를 추가했습니다. 보고서를 실행할 때 올바른 URL로 새 창이 열리지 만 이미지가 표시되지 않습니다. 내가 설정 파일에 빠진 몇 가지 설정이 있습니까 ?? – sdd

+0

"../ReportByUserName.aspx/ImageHandler.ashx?ID"와 같은 올바른 URL을 가지고 있지만 URL에 "ReportByUserName.aspx"가 없어야합니다. –