是否可以知道上传文件的类型是否为图像?

时间:2009-07-03 17:46:17

标签: asp.net javascript image file-upload

当用户上传文件时,是否可以知道上传的文件是否为图像,

我对任何解决方案,客户端,服务器端或两者都开放,我们根据具体情况选择。

4 个答案:

答案 0 :(得分:6)

是的,通过检查文件的magic number

答案 1 :(得分:2)

您可以使用以下代码检查文件是否为图像。

public bool IsFileAnImage(string filePath)
{
   try
   {
      Image image = Image.FromFile(filePath))
   }
   catch
   {
      return false;   
   }
   finally
   {
      image.Dispose();
   }

   return true;
}

答案 2 :(得分:0)

这可以通过使用以下函数在GD服务器端完成:((modified version of this)

function imageFileTypeFromBinary($file)
{

    $binary = file_get_contents($file);

    if (
        !preg_match(
            '/\A(?:(\xff\xd8\xff)|(GIF8[79]a)|(\x89PNG\x0d\x0a)|(BM)|(\x49\x49(\x2a\x00|\x00\x4a))|(FORM.{4}ILBM))/',
            $binary, $hits
        )
    ) {
        return 'application/octet-stream';
            //return false;

    }
    static $type = array (
        1 => '.jpeg',
        2 => '.gif',
        3 => '.png',
        4 => '.x-windows-bmp',
        5 => '.tiff',
        6 => '.x-ilbm',
    );
    return $type[count($hits) - 1];
    // or simply return true
    // return true;
}

如果你愿意,你可以使它返回true,或者与mime类型相反。

答案 3 :(得分:-2)

一种简单的方法是查看文件的扩展名。