我怎么能允许只上传10MB最大,只有.gif jpg和png

时间:2017-10-11 20:42:44

标签: php

我只需要允许10MB最大上传和.gif .png .jpg,我该怎么办? 它用于上传图像,创建新目录并上传图像,但我需要10 MB的限制,当然,只有这种格式。

<?php 

$dirname = uniqid();
mkdir("uploads/$dirname", 0777);

$myfile = fopen("uploads/$dirname/index.php", "w") or die("");
$txt = "<?php
header('Location: /publictools');
?>";
fwrite($myfile, $txt);
$txt = "<?php
header('Location: /publictools');
?>";
fwrite($myfile, $txt);
fclose($myfile);


$target_path = "uploads/$dirname/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) 
{ 
echo "<div align='center'><span style='color:green;'>Listo, Encontraras tu archivo en: http://********/uploads/$dirname/". basename( $_FILES['uploadedfile']['name'], $target_path). "</span></div><br>";
}else{
echo "<div align='center'>Ha ocurrido un error!</div>";
} 
?>

1 个答案:

答案 0 :(得分:1)

对于filesize,只需检查上传文件的size

if ($_FILES["uploadedfile"]["size"] > 10485760) {
    echo "Sorry, your file is too large.";
}

此处的大小以字节指定,因此10兆字节为10485760

对于文件格式,您必须检查上传文件的name,然后使用 pathinfo() PATHINFO_EXTENSION检查扩展程序:

$target_file = basename($_FILES["uploadedfile"]["name"]);
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
}

上面明确只允许PNGGIFJPG(或JPEG)文件,但您可以使用数组存储所需的文件类型你想要的。

希望这有帮助! :)