Php 如何删除不是图像的文件?
我编写此代码是为了存储图像,避免有人存储恶意软件或与图像不同的其他文件:Php 如何删除不是图像的文件?,php,Php,我编写此代码是为了存储图像,避免有人存储恶意软件或与图像不同的其他文件: $content = file_get_contents($image); file_put_contents($path, $content); // Check imagesize to know if it is an image or not: $sizeimage = getimagesize(dirname(__FILE__)."/".$path); if($sizeimage[0]<10000){ e
$content = file_get_contents($image);
file_put_contents($path, $content);
// Check imagesize to know if it is an image or not:
$sizeimage = getimagesize(dirname(__FILE__)."/".$path);
if($sizeimage[0]<10000){ echo "ok"; }else{ unlink(dirname(__FILE__)."/".$path); }
$content=file\u get\u contents($image);
文件内容($path,$content);
//检查imagesize以了解它是否为图像:
$SIZEMAGE=getimagesize(dirname(_文件__)。“/”$path);
如果($sizeimage[0]图像文件无效,$sizeimage[0]
返回0
(选中)。
因此,如果文件不是有效图像,以下语句也会验证true
:
if($sizeimage[0]<10000)
如果($sizeimage[0]0&&$sizeimage[0]图像文件无效,$sizeimage[0]
返回0
(检查)。
因此,如果文件不是有效图像,以下语句也会验证true
:
if($sizeimage[0]<10000)
if($sizeimage[0]0&&$sizeimage[0]getimagesize将在出错时返回false
。这意味着:
$sizeimage=false
$sizeimage[0]=null
null
转换为0
和0<10000
getimagesize在出错时将返回false
。这意味着:
$sizeimage=false
$sizeimage[0]=null
null
转换为0
和0<10000
if($sizeimage[0]if($sizeimage[0]请检查文件扩展名。如果扩展名无效,则不允许
要删除文件,请使用PHP检查文件扩展名。如果文件扩展名无效,则不允许
要删除文件,请使用PHP。我将您的代码修改如下:
$content = file_get_contents($image);
file_put_contents($path,$content);
// Check imagesize to know if it is an image or not:
$sizeimage = getimagesize(dirname(__FILE__)."/".$path);
if($sizeimage){ echo "ok"; } else { unlink(dirname(__FILE__)."/".$path); }
这应该可以工作。取消链接将在$sizeimage为null或false时执行
有一种更好的方法可以通过检查文件的mime类型来判断文件是否为图像。请参见finfo_file(PHP4)或finfo(PHP5)。我将您的代码修改如下:
$content = file_get_contents($image);
file_put_contents($path,$content);
// Check imagesize to know if it is an image or not:
$sizeimage = getimagesize(dirname(__FILE__)."/".$path);
if($sizeimage){ echo "ok"; } else { unlink(dirname(__FILE__)."/".$path); }
这应该可以工作。取消链接将在$sizeimage为null或false时执行
有一种更好的方法可以通过检查文件的mime类型来判断文件是否为图像。请参阅finfo_文件(PHP4)或finfo(PHP5)。因为可能您仍然需要宽度小于10000的图像?请检查PHP文档中的“返回值”部分(我的答案中的链接)。根据文档,如果图像文件无效,getimagesize()
的索引0
和1
可能返回0
。如果($sizeimage!==false&&isset($sizeimage[0])&&$sizeimage[0]<10000)
语句因此可能会验证true
,即使文件中没有有效的图像。@Anne Fair,但是如果图像无效,getimagesize可能会返回false。最终的解决方案是我们的答案的组合。更新了示例,现在说明了无效图像的所有可能返回值。如果getimagesize()
返回false
,if($sizeimage[0]>0&&$sizeimage[0],因为您可能仍然需要宽度小于10000的图像?请检查PHP文档中的“返回值”部分(我的答案中的链接)。根据文档,索引getimagesize()的0
和1
)如果图像文件无效,
可能返回0
。如果($sizeimage!==false&&isset($sizeimage[0])&&$sizeimage[0]<10000,
语句因此可能会验证true
,即使文件中没有有效的图像。@Anne Fair,但是如果图像无效,getimagesize可能会返回false。最终的解决方案是我们的答案的组合。更新了示例,现在说明了无效图像的所有可能返回值。如果getimagesize()
返回false
,即if($sizeimage[0]>0&&$sizeimage[0]
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg"))) { echo 'valid file'; }else { echo 'invalid file type';}
$content = file_get_contents($image);
file_put_contents($path,$content);
// Check imagesize to know if it is an image or not:
$sizeimage = getimagesize(dirname(__FILE__)."/".$path);
if($sizeimage){ echo "ok"; } else { unlink(dirname(__FILE__)."/".$path); }