C# 使用Web API返回图像

C# 使用Web API返回图像,c#,asp.net-web-api,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

我有一个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;
}

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

如果要返回文件,请不要从操作中返回
字节[]
,因为它会被
base64
编码。您可以在客户端上解码
base64
字符串,或者更好地使用
File
方法

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

网络服务拍到的照片,你确定这是jpg吗?@D.J,我肯定。我刚检查过。好的,你能检查一下客户端收到的字节数组是否和从Web服务发送的字节数组一样长吗?可能图像没有完全发送到服务器client@D.J,字节数组的大小不同。有点不对劲。如何从响应中获取图像?我不敢相信这有多困难。我的第一个猜测是,客户端没有收到图像,但收到了一个错误或信息页面,您能在浏览器中打开客户端请求的url吗?@w0051977,使用此答案客户端应保持不变。试试看你是说在我的原始帖子中使用客户端代码吗?谢谢
[HttpGet("{id}")]
public ActionResult Get(Guid id)
{
    var files = Directory.GetFiles(@"Pictures\");
    foreach (var file in files)
    {
        if (file.Contains(id.ToString()))
        {
            return File(System.IO.File.ReadAllBytes(file), "image/jpeg");
        }
    }
    return null;
}