CNode

怎么判断一个图片是否伪图片

问答
Sstepjacky__legacy_530e086f3c90760f0d01d5f8发布于12 年前最后回复11 年前3 回复6957 浏览0 收藏

网站有让用户上传图片功能,怎么判断上传上来的图片是真正的图片而不是其他文件只修改了个扩展名的伪图片呢

查看回复

回复 (3)

C
chinghanho#1·12 年前

Magic number 是指檔案前 16-bit 字元,用來判斷該檔案的類型

用 Node.js 來寫的話,應該是讀取檔案 Buffer 然後判斷 Magic number,例如:

var fs = require('fs')

fs.readFile('./path/to/image.jpg', function(err, buf) {

  var JPG_MAGIC_NUMBER = 'ffd8'

  if (buf.toString('hex', 0, 2) === JPG_MAGIC_NUMBER) {
    return console.log('this file is JPG')
  }

  console.log('this file is not JPG')

})
L
leapon#3·11 年前

说个想法,用phantomjs上用固定尺寸显示上载的图片,非图片会显示出错,页面上是默认的broken image图像。

参与回复
登录后即可参与回复。登录