当用户上传文件时,是否可以知道上传的文件是否为图像,
我对任何解决方案,客户端,服务器端或两者都开放,我们根据具体情况选择。
答案 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)
一种简单的方法是查看文件的扩展名。