如何使用web api返回图像的响应?

时间:2016-10-17 07:23:50

标签: asp.net asp.net-mvc asp.net-web-api

我有两个基于web asp.net mvc的项目。

第一个有图像预览api,有点像这样实现......

private async Task <HttpResponseMessage> GetImage(int id)
{
    string filePath = "abstractedforsimplicity.png";
    using(var file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true)) 
    {
        byte[] buff = new byte[file.Length];
        await file.ReadAsync(buff, 0, (int) file.Length);
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(buff)
        };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
        return result;
    }
}

这有效,我可以使用以下网址显示预览 - domain / api / image / 3

现在我是一个不同的应用程序,我想再次使用相同的预览。我不想直接暴露这个api,因此将制作一个代理api,它将在内部进行调用。

public HttpResponseMessage GetImage(int id)
{
   string tempalteUrl = string.Format("{0}/{1}", ConfigurationManager.AppSettings["rmgpubadmin:template-base-url"], id);
   WebClient client = new WebClient();
   byte[] bytes = client.DownloadData(tempalteUrl);
   // not very sure what should i do here ??
   return null;
}

我尝试将字节转换为对象,但如果失败并出现错误 - System.Runtime.Serialization.SerializationException。

The input stream is not a valid binary format. The starting contents (in bytes) are: 89-50-4E-47-0D-0A-1A-0A-00-00-00-0D-49-48-44-52-00 ...

我应该在这做什么?

0 个答案:

没有答案