如何检测到这是有效的VALID二进制STL(立体光刻)文件

use*_*899 2 ascii stl

我有一个HTML表单,用户可以在其中上传二进制文件或ascii stl文件。但是我想确保仅上传有效的二进制文件和ascii文件,例如如果用户将PDF文件的扩展名更改为.stl(3D二进制文件和ascii stl文件的扩展名),则代码必须检测到其无效的stl文件。

Rob*_*obᵩ 5

引用维基百科

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字节的数字(三角形的数量)。