对象存储文件名后缀最佳实践
在对象存储(如OSS、GCS、MinIO、S3)中存储文件(图片、视频等)时,文件名后缀处理至关重要。本文探讨如何有效利用文件后缀,避免重复存储,并确保文件识别。
一种常见方法是使用文件的MD5哈希值作为文件名,防止重复上传。但随之而来的是后缀名处理问题:丢失后缀名将导致文件类型识别困难。
本文分析了两种方案:根据文件内容判断类型,或根据用户提供后缀名判断。前者计算开销大,准确率也无法保证100%;后者虽然简单,但容易受用户恶意篡改后缀名影响。 此外,后缀名存储方式也有两种选择:添加到文件名或存储为元数据。
最佳方案:保留并直接使用用户提供后缀名。 除非应用完全不读取文件内容,否则必须存储文件元数据,包括用户ID、原始文件名、文件大小和哈希文件名。 用户恶意篡改后缀名属于用户自身问题,应用应确保自身可靠性,而不应因用户错误而降低系统效率。 因此,直接使用用户提供后缀名,无需额外验证文件类型,既能避免重复存储,又能方便后续文件识别和处理。 通常情况下,将后缀名添加到文件名中更为便捷。
以上就是对象存储文件名后缀如何处理才能既避免重复存储又方便文件识别?的详细内容,更多请关注php中文网其它相关文章!