你好,我正在開發上傳圖片上傳系統。我有一些限制,例如只允許某些類型的圖像取決於擴展名(jpg,jpeg,png ...)。如何限制上傳大小?
驗證的那部分工作得很好。我通過上傳PDF文件進行測試,並得到了我期待的錯誤,並且文件未上傳。我也有一個if語句來確保文件大小小於200KB。但是,這不起作用。即使它們太大,2MB的圖像也會上傳。這個想法是上傳5張圖片。
下面是相關的PHP的代碼:
include_once 'db.inc.php';
for($int = 1; $int <= 5; $int++){
$str = (string) $int;
$inputName = 'image' . $int;
if(isset($_FILES[$inputName]['name'])){
$name = $_FILES[$inputName]['name'];
$size = $_FILES[$inputName]['size'];
$type = $_FILES[$inputName]['type'];
$tmp_name = $_FILES[$inputName]['tmp_name'];
$error = $_FILES[$inputName]['error'];
$dest = 'uploads/';
echo $size;
echo $name;
if(!empty($name)){
global $dest;
global $tmp_name;
global $size;
global $name;
$jpg = 'image/jpg';
$jpeg = 'image/jpeg';
$pjpeg = 'image/pjpeg';
$x_png = 'image/x-png';
$png = 'image/png';
$gif = 'image/gif';
$bmp = 'image/bmp';
$allowedExts = array('jpg','jpeg','png','bmp');
$temp = explode('.',$name);
$ext = end($temp);
if($_FILES[$inputName]['type'] == $jpg
or $_FILES[$inputName]['type'] == $jpeg or $_FILES[$inputName]['type'] == $pjpeg
or $_FILES[$inputName]['type'] == $x_png or $_FILES[$inputName]['type'] == $png
or $_FILES[$inputName]['type'] == $png or $_FILES[$inputName]['type'] == $gif
or $_FILES[$inputName]['type'] == $bmp)
{
if(!$size < 200000){
echo '<p>' . $name . 'Is too big' . '</p>';
if(!in_array($ext, $allowedExts)){
echo '<p>' . $name . 'Is not an image' . '</p>'
}
}else{
move_uploaded_file($tmp_name, $dest.$name);
}
}
else{
global $name;
echo '<div><p style="background:black;color:red;font-size:14px;position:relative;top:5px;left:30px"><span>' . $name . ' is either too big or not an image' . '</span></p></div>';
}
}
}
$int = (int) $str;
}
所以這是PHP的,這裏是有關HTML還以供參考:
"<div class="fieldRow"><label class="image1" for="image 1" style="display:block;width:100%;">Image 1: <input class="pickImage" name="image1" type="file" /><?php ;?></label></div>
<div class="fieldRow"><label class="image2" for="image 2" style="display:block;width:100%;">Image 2: <input class="pickImage" name="image2" type="file" /><?php ;?></label></div>
<div class="fieldRow"><label class="image3" for="image 3" style="display:block;width:100%;">Image 3: <input class="pickImage" name="image3" type="file" /><?php ;?></label></div>
<div class="fieldRow"><label class="image4" for="image 4" style="display:block;width:100%;">Image 4: <input class="pickImage" name="image4" type="file" /><?php ;?></label></div>
<div class="fieldRow"><label class="image5" for="image 5" style="display:block;width:100%;">Image 5: <input class="pickImage" name="image5" type="file" /><?php ;?></label></div>"
整個形式遠大於並擁有適當ENC_TYPE用後一種方法的屬性一起和具有php文件名稱的值的action屬性。如果你能指點我的方向,這將是非常有益的。
是什麼呢? 'global $ size'以前似乎覆蓋了'$ size'中的內容。 – Piskvor