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); }