使用Web API返回图像

时间:2019-03-16 15:37:45

标签: c# asp.net-web-api

我有一个Web服务方法,如下所示:

[HttpGet("{id}")]
public ActionResult<byte[]> Get(Guid id)
{
    var files = Directory.GetFiles(@"Pictures\");
    foreach (var file in files)
    {
        if (file.Contains(id.ToString()))
        {
            return System.IO.File.ReadAllBytes(file);
        }
    }
    return null;
}

这是客户端代码,它肯定可以正常工作,即它正在调用Web服务,而Web服务正在返回图像:

var response2 = await client.GetAsync("http://localhost:59999/api/Images/5c60f693-bef5-e011-a485-80ee7300c692");
byte[] image2 = await response2.Content.ReadAsByteArrayAsync(); //https://stackoverflow.com/questions/39190018/how-to-get-object-using-httpclient-with-response-ok-in-web-api
System.IO.File.WriteAllBytes("image.jpg", image2);

当我尝试在Paint中打开image.jpg时;它说这是一个无效的文件。有什么问题吗?

1 个答案:

答案 0 :(得分:4)

如果您要返回文件,请不要从操作中返回@objc func backAction(sender:UIButton) { // Some action } ,因为它已被byte[]编码。您可以在客户端上解码base64字符串,或者最好使用实际使用的base64方法

File