STM32 Web 服务器 - "SPI Flash" 中的 html 文件如何读取闪存中的 "image"

STM32 Web server - How html file in "SPI Flash" read "image" in flash

我正在研究 STM32。我正在尝试构建一个基于 STM32 的网络服务器。首先,我在 SPI 闪存上实现了一个文件系统,并使用 LWIP 库将其写入浏览器。没有任何 "src" 的 html 文件一切正常。现在我想在网页上添加图像,这意味着我的 SPI 闪存也需要有图像。我想我应该先格式化图像再存储它?如果它存储在 SPI 闪存中。 html 如何使用图像?有人知道吗?

if ((buflen >=5) && (strncmp(buf, "GET /", 5) == 0))

  {

      FileNodeId = Find_File_Node(WEBPAGE);
      if(Load_File_Table() != VAT_SUCCESS) return VAT_UNKNOWN;
      else{
          for(int i = 1;i <= File_Table[FileNodeId].numSector;i++){

              READSector(WEBPAGE,&webbuf[0],i);
              int html_length=strlen(&webbuf[0]);
              netconn_write(conn,&webbuf[0], html_length, NETCONN_COPY);
              memset(&webbuf[0],0,4080);

          }
      }
      netbuf_delete(inbuf);


  }

这就是我使用 LWIP Lib 将 html 页面写入 Web 浏览器的方式。 html 存储在 link 列出的闪存文件系统中。

没什么特别的。

当浏览器加载 html 页面时,它会解析 objects 的整个树。 Objects 的图像与 url 图像一起呈现。

<img src="url_path/image_name.png"/>

然后浏览器在单独的请求中加载每个图像。因此,您的服务器将获得每个请求的图像路径,并且必须 return 正确的带有图像的 http 包,没有任何其他格式。如你return图片,你的包裹必须包含对应的headers:

Content-Length: image_len_in_bytes
Content-Type: image_media_type

image_media_type 可以是 image/gifimage/pngimage/jpegimage/bmpimage/x-icon 或者如果您要使用的话也可以是其他的.

所以你有足够的代码来发送任何图像,只需更改内容类型。