Go语言 获取媒体MIME类型的有效方法

piv4azn7  于 2022-12-30  发布在  Go
关注(0)|答案(1)|浏览(498)

我有一个媒体的网址,我想得到这个媒体文件的mimetype,在Go语言中有什么有效的方法可以做到呢?
我试过戈兰的mimetype图书馆

mtype := mimetype.Detect(body)

但它几乎需要500毫秒。如何做得更好?

krcsximq

krcsximq1#

如果您想提高性能,就应该避免下载内容。
1.尝试使用HEAD方法创建请求以仅获取头(服务器应支持此方法),在某些情况下Content-Type将是非正式的
1.选中Content-Disposition HEADER -可能Content-Type中包含application/octet-stream,但myfile.aac在其中-因此,在某些情况下,您可以按名称检测mime类型-某些情况下,将按文件扩展名进行检测
1.检查服务器是否支持范围查询https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests-在这种情况下,您可以选择不读取整个文件,而只是其中的一部分-大多数二进制格式都有特殊的字节掩码,定义其内容类型-可能是mimetype包没有涵盖它,但在这种情况下,您可以编写您的-这不是那么多的工作
所以你的策略是:
1.进行HEAD查询-如果Content-Length和/或Content-Disposition标头包含所需信息-确定
1.仅对前N个字节进行范围请求并检查格式标记
如果服务器不支持Ranges和HEADER -执行GET查询,但不读取整个内容-只从流中获取头和前N个字节。

相关问题