2016-08-15 20 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(); 
} 
} 
関連する問題