最近在做一个项目,使用bootstrap框架,随手引入了一些bootstrap-swith、bootstrap-clockpicker、bootstrap-colorpicker等组件,在本地把页面调试妥当之后准备上传到esp8266上,出现了一些警告,不过上传还算顺利
当访问页面的时候傻眼了,bootstrap.min.css和bootstrap.min.js出现404,通过onNotFound回掉访问文件也显示404,然后通过SPIFFS.exists查询文件发现文件不存在,基本就可以确定文件没有被上传,在更换了几个ESP8266FS无果之后,随手翻了一下警告以及上面的信息发现坑爹了
SPIFFS_write error(-10010): unknown error adding file!
Error for adding content from js
Error for adding content from css
等等信息,并且打包的文件列表也没有看到那些404的文件,然而ESP8266FS却无视了这些警告直接把不完整的文件打包并上传到esp8266上。在尝试解压和打包文件均失败之后,就跑去google了,SPIFFS果然队文件有一定的限制:
1、文件名不能超过31个(应该是32个,有一个\0被系统占用掉);
2、SPIFFS本身不支持文件夹系统,但是可以识别‘/’作为文件名,换句话说路径会被识别成文件名,结合第一条,也就是路径加上文件名不能超过31个字;
3、文件大小倒是没见到有限制,一说是通过ESP8266FS上传最大只能到142k或者192k(这个没有亲自验证过),然后是最大见到有人通过FSWebServer传了4MB的文件上去。
然而比对这边,并没有中招,最长的文件名js/bootstrap-colorpicker.min.js刚刚好31个字符,其他的文件都比它少,重新上传了一次依旧无解,最后只能尝试缩短文件名,结果奏效了,没有出现警告,上传上去列出文件列表也发现齐全了,这就很尴尬了,明明文件名没到31个字,结果缺不给上传,如果遇到这种情况的话就只能缩短文件名试试看了。