httphandler를 통해 이진 이미지를 표시하려고합니다.HttpHandler를 통해 이진 이미지를 표시하려고합니다.
아약스 호출
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/JPEG";
try
{
krystaladbDataContext db = new krystaladbDataContext();
var binimg = (from i in db.image_tables
where i.IMG_ID.Equals(1380)
select i.IMG_THUMB).Single();
byte[] b = binimg.ToArray();
MemoryStream ms = new MemoryStream(b);
Image img = Image.FromStream(ms);
img.Save(context.Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ex)
{
context.Response.Write(ex);
}
}
뭔가 아직 여기하고 바이너리 데이터를 덤프되어 있지 보인다
$.ajax({
type: "GET",
url: "AnswerPostHandler.ashx",
data: "imgid=1380",
success: function (msg) {
$(parent).append(msg);
},
error: function (msg){
alert(msg);
}
});
처리기 코드 : 여기 내가 가지고있는 코드입니다. Base64 인코딩도 선택 사항이지만 테스트를 거쳤으며 Internet Explorer 7에서 작동하지 않습니다 (문자 그대로 이미지 부분을 잘라냅니다).
내가 여기서 잘못하고있는 부분에 대해 조언하고 올바른 방법을 제안 할 수 있습니까? 감사
이미지를 구축 할 필요가 없습니다. 그냥 바이트 배열을 작성 - context.Response.BinaryWrite (b); – adatapost
나는 그것을하려고했지만 이미지가 표시되지 않습니다 ... –
ajax 출력 (바이너리)을 DOM 요소에 쓸 수 없습니다. base64 DataURI (이 경우에는 핸들러 코드를 수정해야 함)를 사용할 수도 있지만 브라우저에는 많은 문제가 있습니다. 가장 좋은 옵션은 use - image 태그입니다. – adatapost