我有一个HTML表单,用户可以在其中上传二进制文件或ascii stl文件。但是我想确保仅上传有效的二进制文件和ascii文件,例如如果用户将PDF文件的扩展名更改为.stl(3D二进制文件和ascii stl文件的扩展名),则代码必须检测到其无效的stl文件。
引用维基百科:
An ASCII STL file begins with the line:
`solid name`
where name is an optional string (though if name is omitted there must still be a space after solid).
Run Code Online (Sandbox Code Playgroud)
因此,要确认ASCII STL,请在第一行中检查'^ solid(name)?$'。
要确定文件是否为二进制STL,请利用偏移量80处的length字段。它指定文件中的三角形数量。
因此,要确认二进制STL文件,请检查以下表达式:
filesize == UINT32@80 * 50 + 84
Run Code Online (Sandbox Code Playgroud)
此处的数字84是二进制STL标头的总大小(80字节),其后是4字节的数字(三角形的数量)。