基于Esp32 Arduino SPIFFS的静态网址区分大小写

时间:2019-11-22 20:59:22

标签: esp32 platformio spiffs

我正在尝试通过PlatformIO在ESP32上制作一个静态Web服务器。我正在使用PlatformIO中内置的“上传文件系统”任务来上传www文件夹。然后,我使用package.json来提供页面。问题是网址区分大小写,我需要不要这样。

我认为这是由于底层SPIFFS文件系统引起的,而要对其进行修复,我应该以某种方式进行更改。

1 个答案:

答案 0 :(得分:1)

假设您使用的是标准ESP32 Web服务器库,可以执行以下操作: 在处理函数中,比较您获得的path参数

webServer.uri()

这是一个char数组,然后使用int strcasecmp(const char * s1,const char * s2); 功能部分应该是

if (strcasecmp (webServer.uri(), "www/mysmallcapslink.html") == 0) {
... do your stuff here ...
e.g. serve the file
}

注意== 0表示两个字符串(带有s的C字符串)相同(除了大小写)。所以URL请求像 www / Mysmallcapslink.html www / MySmallCapsLink.html 将全部由同一个处理程序处理。

有关srtcasecmp的信息:

说明strcasecmp()函数应比较字符串,而忽略大小写的差异 s1指向s2指向的字符串。 strncasecmp()函数应 比较,而忽略大小写差异,字符串中不超过n个字节 s1指向s2指向的字符串。

strncasecmp()的行为应类似于将字符串转换为小写字母,然后 字节比较已执行。

返回值完成后,strcasecmp()应返回大于,等于或小于的整数 如果s1指向的字符串(忽略大小写)大于,等于或大于0,则返回0 分别小于s2指向的字符串。