You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API请求返回乱码,期望GET请求直接显示图片的技术求助

接口返回图片显示乱码问题解决

问题情况

  • 访问接口URL时页面显示随机乱码
  • 目标:通过GET请求访问https://localhost:7131/owner/trainee/photo/TEST/TEST.jpg时,在Postman或浏览器中直接显示图片

原API代码

[HttpGet("photo/{token}/{filename}")]
public async Task traineePicture()
{
Byte[] b = System.IO.File.ReadAllBytes(@"C:\Users\lem\Pictures\Saved Pictures\nando-jpeg-quality-001.jpg");
return File(b, "image /jpg");
}

问题原因及修正方案

  1. 返回值类型错误:原方法返回async Task,但File方法返回的FileResult属于IActionResult子类,必须指定返回Task<IActionResult>才能正确输出文件内容。
  2. MIME格式错误:"image /jpg"里的空格会导致浏览器无法识别正确文件类型,改成标准的"image/jpeg"或"image/jpg"。
  3. 路由参数缺失:路由定义了{token}和{filename},但方法未接收这两个参数,不符合路由配置规范,后续动态读取文件也会受影响。
  4. 同步方法混用:异步方法里用同步的ReadAllBytes会阻塞线程,换成异步的ReadAllBytesAsync保持异步一致性。

修正后的代码

[HttpGet("photo/{token}/{filename}")]
public async Task<IActionResult> TraineePicture(string token, string filename)
{
    // 可根据token和filename动态生成文件路径,示例暂用固定路径
    string filePath = @"C:\Users\lem\Pictures\Saved Pictures\nando-jpeg-quality-001.jpg";
    byte[] imageBytes = await System.IO.File.ReadAllBytesAsync(filePath);
    return File(imageBytes, "image/jpeg");
}

内容的提问来源于stack exchange,提问作者Choy Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:32:39