TYPO3 如何生成文件索引,如其 XML-网站导出数据所示?
How does TYPO3 generate the index of a file, as seen in its XML-website export data?
以下 XML 代码是使用 TYPO3 网站导出功能生成的文件的摘录。导出功能配置为包括网站上使用的文件:
...
<files_fal type="array">
<file index="008f35a8201e50eb24a9667092782ec0" type="array">
<filename>somefilename.jpg</filename>
<filemtime>1603259011</filemtime>
<content base64="1">...</conten>
<content_sha1>...</content_sha1>
</file>
</files_fal>
...
我想知道的是,在这种情况下索引属性(008f35a8201e50eb24a9667092782ec0)的值是如何生成的。感谢您提供这方面的任何线索。
这看起来很像存储在 sys_file table 中的哈希值之一。应该是 identifier_hash 才有意义。
现在我自己找到了答案(通过查看 TYPO3 的 PHP 源代码)
该字符串是在导出期间通过 sys_file table、[ 中文件的 存储 uid 串联创建的=30=] 来自同一个 table,中间有一个 :。
然后使用 md5 将生成的字符串转换为散列。
在伪代码中:
hash = make_md5( storage_uid + ':' + identifier_hash )
根据您的 md5 生成函数的工作方式,可能需要事先将字符串编码为二进制。
以下 XML 代码是使用 TYPO3 网站导出功能生成的文件的摘录。导出功能配置为包括网站上使用的文件:
...
<files_fal type="array">
<file index="008f35a8201e50eb24a9667092782ec0" type="array">
<filename>somefilename.jpg</filename>
<filemtime>1603259011</filemtime>
<content base64="1">...</conten>
<content_sha1>...</content_sha1>
</file>
</files_fal>
...
我想知道的是,在这种情况下索引属性(008f35a8201e50eb24a9667092782ec0)的值是如何生成的。感谢您提供这方面的任何线索。
这看起来很像存储在 sys_file table 中的哈希值之一。应该是 identifier_hash 才有意义。
现在我自己找到了答案(通过查看 TYPO3 的 PHP 源代码)
该字符串是在导出期间通过 sys_file table、[ 中文件的 存储 uid 串联创建的=30=] 来自同一个 table,中间有一个 :。
然后使用 md5 将生成的字符串转换为散列。
在伪代码中:
hash = make_md5( storage_uid + ':' + identifier_hash )
根据您的 md5 生成函数的工作方式,可能需要事先将字符串编码为二进制。