如果我有以下情况:
存储为文件系统的图像集(JPG)。每个图像的名称都是这样的:
与学生编号连接的标识符
例如:356782377.jpg
我有一个具有以下结构的表:
TransTime DateTime
Photo image
Identifier int
StudentNumber int
每个Trans都有一个db表中的学生图像和文件系统中的等效图像。 最初表格记录是完整的,除了学号。
EX:
TransTime Photo identifier student number
2016-08-05 18:39:00 image 35678 ??
我想从文件系统中的图像文件名中提取学生编号(2377)
部分,方法是将db中类型(图像)的照片与存储在文件系统中的图像进行比较,并设置该事务的学生编号。 db。
我想将两者(db中的图像和文件系统中的图像)转换为字节并比较它们以使用正确的数字更新null学生。 这是我问题最合适的解决方案吗?
答案 0 :(得分:2)
通常,当您需要比较两个文件是否相等时,尤其是如果您希望在同一文件上多次执行比较时,最好生成文件的哈希摘要并将其与文件一起存储在数据库。然后,当您需要将新文件与数据库中的文件进行比较时,您可以生成新文件的摘要,并将其与数据库中的文件进行比较。
SHA256摘要使用32个字节。 MD5哈希使用16.由于您不需要加密级别,如果您希望进行大量比较,可以使用MD5。
如果您无法修改数据库架构和/或数据以添加摘要,那么您提出的建议可能是您唯一的选择。
答案 1 :(得分:1)
标识符是否唯一?你真的想要二进制文件比较,还是只想获得给定图像的学号?
如果标识符是唯一的,并且您只需要学生编号(不需要确保二进制文件相同),我只需浏览文件系统上的文件名并根据需要更新数据库。