You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Arduino IDE将ESP8266 SPIFFS内容加载到server.send生成页面

问题分析与解决步骤

兄弟,我一眼就发现了两个核心问题,帮你一步步搞定这个图片不显示的麻烦:

1. 最致命的错误:HTTP状态码用错了!

你现在写的是server.send(500, "text/html", ...),这里的500是服务器内部错误的状态码。浏览器收到这个状态码后,会默认这是一个错误响应——哪怕你返回了正确的HTML内容,它也会以错误页面的逻辑处理,大概率不会正常加载页面里的图片资源。

解决方法:把状态码改成200(成功响应的标准状态码):

server.send(200, "text/html", "<head><title>esp8266</title></head><body><div id=\"banner\"><img src=\"/images/image.jpg\" width=\"900\" height=\"295\" /></div> <div id=\"page\"></div></body></html>");

2. HTML语法有疏漏

你写的HTML末尾是</body</html>,这里少了一个闭合的>,正确的写法应该是</body></html>。语法错误会导致浏览器解析DOM结构时出错,可能无法正确识别<img>标签。

3. 额外确认(可选)

因为你直接访问图片URL和根目录index.html里都能正常显示图片,说明静态资源路由应该没问题,但还是可以再核对一下你的SPIFFS静态服务配置,比如有没有类似这样的代码:

if(!SPIFFS.begin()){
  // 处理SPIFFS挂载失败的情况
}
server.serveStatic("/images", SPIFFS, "/images/");

确保SPIFFS内部的图片路径确实是/images/image.jpg(注意路径开头的/不能少)。

4. 最后一步:强制刷新浏览器

修改代码上传到ESP8266后,按Ctrl+F5强制刷新浏览器页面,避免浏览器缓存之前的错误响应。

按上面的步骤调整后,动态生成页面里的图片应该就能正常显示了!

内容的提问来源于stack exchange,提问作者Thomas Patrick

火山引擎 最新活动