2016-08-15 1 views
0

이전 .NET 3.5 사이트를 편집 중이므로 이미지를 다운로드 한 다음 요청에 제공해야합니다. 근본적으로 통과.ASHX에 이미지 작성

데이터가 올바른 크기로 보내지지만 이미지가 나타나지 않습니다.

public class AppImageHandler : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     var url = "http://static.idolator.com/uploads/2015/10/adele-hello.jpg"; 

     HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(url); 
     WebResponse imageResponse = imageRequest.GetResponse(); 
     Stream responseStream = imageResponse.GetResponseStream(); 

     byte[] buffer = new byte[imageResponse.ContentLength]; 
     int read; 
     Stream output = new MemoryStream(); 
     while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0) 
     { 
      output.Write(buffer, 0, read); 
     } 
     responseStream.Close(); 

     HttpResponse r = context.Response; 
     r.ContentType = "image/jpg"; 
     r.BinaryWrite(buffer); 

    } 

답변

0

전체 스트림을 읽지 못했습니다.

나는 전체 바이트 배열을 얻기 위해 이것을 사용 후 작동

public static byte[] ReadFully(Stream input) 
{ 
byte[] buffer = new byte[16*1024]; 
using (MemoryStream ms = new MemoryStream()) 
{ 
    int read; 
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0) 
    { 
     ms.Write(buffer, 0, read); 
    } 
    return ms.ToArray(); 
} 
}