我从后端获得字符串的base64,然后我在Javascript中解码它,以显示在浏览器上。
此字符串可以是任何文件.pdf,.img,.docx,.zip等。
我的base64字符串不包括MIME类型,例如“data:application/pdf; base64'部分。所以我需要得到base64的mime类型。
有没有办法用Javascript或Jquery来解决这个问题?
我从后端获得字符串的base64,然后我在Javascript中解码它,以显示在浏览器上。
此字符串可以是任何文件.pdf,.img,.docx,.zip等。
我的base64字符串不包括MIME类型,例如“data:application/pdf; base64'部分。所以我需要得到base64的mime类型。
有没有办法用Javascript或Jquery来解决这个问题?
3条答案
按热度按时间5ssjco0h1#
您可以使用magic numbers来检测MIME类型(在这里检查list of file signatures)。然而,文件签名不是100%可靠的,您很容易遇到误报。当然,当这样的解决方案绰绰有余时,也会有任务。
因此,如果你有一个Base64字符串,并希望使用文件签名来识别其MIME类型,你不需要解码Base64。一个更快的方法是将文件签名存储为Base64,只需检查输入是否以其中之一开头。
jaxagkaj2#
有一些文件类型表明它们在64进制字符串中是什么类型。对于图像,第一个字符会发生变化。
“/”表示jpeg。
“i”表示png。
“R”表示gif。
“U”表示webp。
“J”表示PDF。
然而,这些并不可靠,因为其他文件有时会以这些字符开头。我在你提到的网站上测试了解码器,它并不适用于所有文件类型。对于一些文件,它只返回一个通用的. bin。至于检测,它可能会尝试解码字符串并测试是否适合某个文件类型。你可以尝试创建自己的解决方案,以同样的方式工作。但是基于扩展名检测文件类型会更有意义,因为您可以访问它。
gkl3eglg3#
刚刚更新+https://stackoverflow.com/a/58158656/8552163以上答案的缩小版本