2012-10-04 4 views
1

Windows Forms에서 mysql blob 이미지를 표시하는 방법을 알고있었습니다.asp.net 이미지 컨트롤에 mysql blob 이미지를 표시하는 방법은 무엇입니까?

try 
      { 
       MySqlConnection connection = new MySqlConnection(hp.myConnStr); 
       MySqlCommand command = connection.CreateCommand(); 
       MySqlDataReader Reader; 
       command.CommandText = "select logo from mcs_institude where id = 1"; 
       connection.Open(); 
       Reader = command.ExecuteReader(); 
       while (Reader.Read()) 
       { 
        pictureBox1.Image = new Bitmap(new MemoryStream((byte[])Reader.GetValue(0))); 
       } 
       connection.Close(); 
      } 
      catch(Exception ex) 
      { 
       MessageBox.Show("Error in Get_ImageFormDB"+ ex.Message, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      } 

하지만 지금은 asp.net 프로젝트를하고 있습니다. 이 이미지에는 이미지 속성이 없습니다.

command = connection.CreateCommand(); 
      command.CommandText = "Select FO_Roomdet_Image from fo_roomtype where FO_Roomdet_Id=1"; 
      connection.Open(); 
      Reader = command.ExecuteReader(); 
      while (Reader.Read()) 
      { 
       Image1.ImageUrl = new MemoryStream((byte[])Reader.GetValue(0));          
      } 
      connection.Close(); 

내가 이것을 asp.net에서 시도하면 오류가 발생합니다.

오류 1 암시 '문자열'내가이 문제를 해결 수있는 방법

에 유형 'System.IO.MemoryStream을'변환 할 수 없습니다. mysql blob 이미지를 asp.net 이미지 컨트롤에 표시하면됩니다.

나를 부탁합니다.

답변

2

당신이하려는 것은 의미가 없습니다. 이미지를 표시하려는 브라우저는 어디에서 다운로드해야하는지 알 필요가 있습니다.

GetImage.aspx와 같이 이미지 생성 전용의 특별한 aspx 페이지를 설정해야합니다.

귀하의 메인 페이지는 다음이 이미지 생성 페이지를 가리키는 IMG HTML 태그를해야합니다 : GetImage.aspx 내부에, 당신은 그것의 ID에 따라 DB에서 이미지를 검색,

<img src="/GetImage.aspx?id=your_image_id"/> 

다음 (URL 매개 변수에서 가져온) . 코드는 다음과 같습니다.

command = connection.CreateCommand(); 
     command.CommandText = "Select FO_Roomdet_Image from fo_roomtype where FO_Roomdet_Id=1"; // or dynamically fetch id with Request.QueryString and properly escape it 
     connection.Open(); 
     Reader = command.ExecuteReader(); 
     while (Reader.Read()) 
     { 

      Response.ContentType = "image/jpeg"; // if your image is a jpeg of course 
      Response.BinaryWrite((byte[])Reader.GetValue(0));         
     } 
     connection.Close(); 
+0

Response.BinaryWrite (imageData); -> imageData 님은 무엇입니까? 어디에서 찾을 수 있습니까? – Sagotharan

+0

죄송합니다. 답을 명확하게 업데이트했습니다. 예, BinaryWrite는 DB에서 검색 한 바이트 []를 씁니다. – mbarthelemy

+0

감사합니다 mbarthelemy. 나는 그것을 얻었다 – Sagotharan

0

글쎄, 이것은 분명히 가장 간단한 대답은 아닙니다. 이미지 생성과 재 생성이 필요할 때마다 추가 aspx 파일을 만들 필요가 없습니다.

실제로 이미지 파일을 바이트 배열로 html 마크 업 언어에 포함시킬 수 있습니다.

당신이 할 필요가 데이터베이스에서 BLOB 바이트 배열을 얻고 이것을 사용할 수 있습니다 : DR은 DataSet 개체에서 가져온 된 DataRow입니다

<img src="data:image/png;base64,<%= System.Convert.ToBase64String((byte[])dr["img"])%>" /> 

....

Internet Explorer 8 및 모든 최신 브라우저에서 테스트 해본 결과 작동합니다.

관련 문제