如何检查上传的图像是否实际上是图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查上传的图像是否实际上是图像相关的知识,希望对你有一定的参考价值。

有没有人知道如何在将上传的图像上传到存储桶之前检查上传的图像是否是图像(而不是恶意文件)?我已经创建了将图像上传到存储桶中的所有内容

  if (logo) {
            //Save photo to bucket
            const pathRef = storageRef.ref('logo/' + uid + '/' + logo.name)
            pathRef.put(logo).then(() => {
                //Get logo URL
                const starsRef = storageRef.ref().child('logo/' + uid + '/' + logo.name)
                starsRef.getDownloadURL().then((url) => {
                    //Update photoURL in user
                    const user = firebase.auth().currentUser
                    user.updateProfile({
                        photoURL: url
                    }).then(() => {
                        console.log("update successfull")
                    }).catch((error) => {
                        console.log(error)
                    })
                }).catch((error) => {
                    console.log(error)
                })
            })

我也只接受“输入”中的图像文件

  <input style={{ display: "none" }} id="file" type="file" accept="image/*" onChange={props.change}></input>

但我相信通过将任何文件更改为图像格式可以轻松跳过这一点,这意味着任何人都可以放任何东西。我没有找到任何可以在函数或其他任何地方检查的文档

答案

云功能和云存储没有任何内置功能来检查一系列字节是否实际上是图像。对于它们来说,字节只是字节,并且它们不会努力解释这些字节。云存储将“内容类型”存储为blob的一部分,但这并不能保证博客中的内容。该内容类型只是博客的元数据。

如果你想知道一个字节序列是否是某种图像格式(并且有很多:JPG,PNG,GIF等),你将需要使用其他一些软件来解析这些字节以确定它们是否是'重新格式化为您定义可接受的图像。例如,ImageMagick将讲述一个被称为图像的文件内容。

以上是关于如何检查上传的图像是否实际上是图像的主要内容,如果未能解决你的问题,请参考以下文章

收藏|分享前端开发常用代码片段

关于js----------------分享前端开发常用代码片段

文件上传不检查现有图像

更新记录:如何检查新文件是否已上传PHP

验证上传的文件是不是是实际的图像文件很重要吗?

上传前在浏览器中裁剪图像[关闭]