您好我正在开发一个上传图片的上传系统。我有一些限制,例如只允许某些类型的图像,具体取决于扩展名(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属性以及post和action属性,该属性具有php文件名的值。如果你能指出我的方向非常有帮助。
答案 0 :(得分:1)
添加:
<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
到您的HTML表单然后在PHP中检查它:
// Error Checking Extended
if($_FILES['image1']['error'] == 2) { // Change to your file field
echo "You've exceeded the maximum file upload size of 512kb.";
return false;
}
编辑:
如果你想要处理数据,我会把它留给你,如果每个单独的文件比复制它更容易,但是为了重新分解和清理代码,我建议你从$ _POST数组。
答案 1 :(得分:0)
你可以使用:
ini_set("upload_max_filesize", "20M");