我有一个html表单,用户上传二进制文件或ascii stl files。但是我想确保只上传有效的二进制文件和ascii文件。如果用户将PDF文件的扩展名更改为.stl
(3D二进制文件和ascii stl文件的扩展名),则代码必须检测到它是一个无效的stl文件。
答案 0 :(得分:4)
引用wikipedia:
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).
因此,要确认ASCII STL,请在第一行检查'^ solid(name)?$'。
要确定文件是否为二进制STL,请利用偏移量80处的长度字段。它指定文件中的三角形数。
因此,要确认二进制STL文件,请检查以下表达式:
filesize == UINT32@80 * 50 + 84
这里的数字84是二进制STL标题的总大小(80字节)和标题后面的一个4字节数字(三角形的数量)。