2016-08-15 51 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(); 
} 
}