Flask访问/image_analysis_result不显示JPG图片,img标签破损如何修复
问题原因
你遇到的404错误核心原因是:你直接把Jinja2模板的插值语法{{url_for(...)}}写在了普通HTML字符串中,Flask只有在渲染模板文件时才会解析{{}}包裹的模板语法,硬编码的字符串不会被处理,因此浏览器会把{{url_for(当成图片URL的一部分发起请求,就出现了日志里的错误请求。
此外还有两个小问题:
- HTML对应的正确MIME类型是
text/html,你写的application/html不符合标准 - 标准HTML图片标签是
<img>,你写的<image>存在兼容性风险
修复步骤
- 首先修改Flask导入语句,加入
url_for依赖:
from flask import Flask, json, request, url_for
- 修改
get_image_analysis_result函数,直接在Python代码中调用url_for生成正确的静态资源路径,替换硬编码的模板语法,同时修正Content-Type配置:
@api.route('/image_analysis_result', methods=['GET']) def get_image_analysis_result(): path = IMAGE_RESULT_PATH # 检查图片是否存在 isExist = os.path.exists(path) if isExist: # 调用url_for生成正确的静态资源访问地址 img_url = url_for('static', filename='outputs/output.jpg') # 用f-string把路径插入到HTML字符串中 content = f"<!DOCTYPE html><html><body><h1>sent message</h1><p><img width='100%' height='100%' src='{img_url}' ></p></body></html>" else: content = "<!DOCTYPE html><html><body><h1>sent message</h1><p>NO RESULT</p></body></html>" mock_response = MockResponse( # 修正为正确的HTML MIME类型 headers={'Content-Type' :'text/html; charset=UTF-8'}, status_code=200, reason='Success', _content=content) return mock_response.content
验证说明
修改后重启服务,只要你的output.jpg确实存放在Flask默认的static/outputs/目录下,访问http://localhost:5005/image_analysis_result就能正常加载图片。
内容的提问来源于stack exchange,提问作者cyber101
相关产品推荐
相关产品推荐

