我在使用当前的php图片上传器时遇到了一些问题。似乎有些人滥用它并上传任何大量文件而不仅仅是jpegs,png和gifs,这会对我的带宽产生影响,而我无法想象它的安全性。
是否可以限制允许上传的内容?也可以按尺寸来计算?
[[[ 1. 4.]
[ 2. 5.]
[ 3. 6.]]]
提前谢谢!
答案 0 :(得分:4)
您应该限制服务器配置中上传文件的最大大小。如果你不能这样做,那么在你的应用程序代码中实现大小检查。
<?php
if ($_FILES["fileField"]["size"] > 500000) { // 500KB
exit("Sorry, your file is too large.");
}
答案 1 :(得分:1)
if if(isset($ _ POST [&#39; button&#39;])){
$errors = false;
$target_file = "upload/". basename($_FILES["fileField"]["name"]);
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
$check = getimagesize($_FILES["fileField"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
} else {
echo "File is not an image.";
$errors = true;
}
// Allow certain file formats
if($imageFileType != "jpg" &&
$imageFileType != "png" &&
$imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$errors = true;
}
//check file size
if ($_FILES["fileField"]["size"] > 500000) { // 500KB
echo "Sorry, your file is too large.";
$errors = true;
}
if ($errors == false){
// move uploaded file
}
答案 2 :(得分:0)
定义最大文件大小和文件类型。 你可以创建一个应该上传的图像类型数组。 假设您上传时没问题。
<?php
//file size in bytes e.g 1000kB or 1MB
$fleSize = 1000000;
fileType = array('image/png', 'image/gif', 'image/jpeg');
if($_FILES['fileField']['size'] > $fileSize){
echo "File too large.............";
}
else{
//see if the file type is in fileType array.
if(!array_key_exists($_FILES['fileField']['type'], $fileType)){
echo"Please upload a png, jpg, jpeg or gif file.";
}else{
//move uploaded file
}
}
?>