2011-04-18 5 views
0

탐색 할 때 제대로 작동하는 사용자 정의 처리기 (ImageHandler.ashx)가 있습니다. 서버에 zip 파일을 찾아 압축을 풀고 비트 맵을 OutputStream에 저장합니다. ashx를 사용하여 jQuery로드를 사용하려고하면 내 png 콘텐츠가 이미지를 표시하는 대신 인코딩되고 깨진 문자로 반환됩니다.png를 표시하기 위해 사용자 정의 HTTP 처리기 ashx 파일과 함께 jQuery로드 사용

+1

jQuery 코드를 보여주세요. – andynormancx

답변

2

서버에서 요청하는 이미지가 이미지이기 때문에 이미지를 나타내는 HTML 코드가 아닙니다.

$('#SomeElement').append($('<img/>', { src: 'ImageHandler.ashx', alt: 'An image' })); 

참고 : zip 파일은 PNG 이미지가 포함되어있는 경우, 당신은 필요 없어

대신 load 방법을 사용하는, 단지 소스로 핸들러에 URL과 이미지 요소를 만들 Bitmap 개체의 압축을 푼 다음 PNG 형식으로 다시 압축하면 Zip 스트림의 내용을 응답 스트림으로 직접 보낼 수 있습니다.

+0

안녕하세요 Guffa는 훌륭한 아이디어 였고 완벽하게 작동했습니다. - 감사합니다! – CtrlShiftF11

+0

BTW, 참고로 - 검색된 이미지는 일반적으로 tiff 또는 bmp 파일이므로 변환을 수행하는 이유입니다. – CtrlShiftF11

0

당신과 같이 "image/png"에 대한 응답의 내용 유형을 설정해야합니다 :

context.Response.ContentType = "image/png"; 
Bitmap convertedImg = new Bitmap(zInStream); 
convertedImg.Save(context.Response.OutputStream, ImageFormat.Png); 

이 브라우저 대신 text/html과의 PNG 이미지로 반환 된 내용을 처리 할 것을 보장한다.

편집
또한, 나는 CPU를 많이 압축 해제에게 그 이미지가로드 될 때마다 수행에 좋습니다. 한 번 압축을 풀고 나서 압축 해제 된 버전을 참조하면 훨씬 더 빠르며 (서버에 더 좋습니다).

관련 문제