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"); }
问题原因及修正方案
- 返回值类型错误:原方法返回
async Task,但File方法返回的FileResult属于IActionResult子类,必须指定返回Task<IActionResult>才能正确输出文件内容。 - MIME格式错误:
"image /jpg"里的空格会导致浏览器无法识别正确文件类型,改成标准的"image/jpeg"或"image/jpg"。 - 路由参数缺失:路由定义了
{token}和{filename},但方法未接收这两个参数,不符合路由配置规范,后续动态读取文件也会受影响。 - 同步方法混用:异步方法里用同步的
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
相关产品推荐
相关产品推荐

