我的php照片上传脚本存在问题。当我上传一个超过2mb的文件时,当我点击上传时它不会显示该错误..但是它在我的脚本中就已经存在了......任何想法为什么会这样?对于前者我上传了一个.wma文件,它是2.38MB ..超过限制..但它只是说“文件类型不允许”为什么它没有显示超过2mb的错误?
这是我的剧本:
<?php
include 'init.php';
if(!logged_in()){
header('Location: index.php');
exit();
}
include 'template/header.php';
?>
<h3>Upload Image</h3>
<?php
if(isset($_FILES['image'], $_POST['album_id'])){
$image_name = $_FILES['image']['name'];
$image_size = $_FILES['image']['size'];
$image_temp = $_FILES['image']['tmp_name'];
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif');
$image_ext = strtolower(end(explode('.', $image_name)));
$album_id = $_POST['album_id'];
$errors = array();
if (empty($image_name) || empty($album_id)){
$errors[] = 'Something is missing';
} else {
if(in_array($image_ext, $allowed_ext) === false){
$errors[] = 'File type not allowed';
}
if($image_size > 2097152){
$errors[] = 'Maximum file size is 2MB';
}
if(album_check($album_id) === false){
$errors[] = 'Couldn\'t upload to that album';
}
}
if(!empty($errors)){
foreach ($errors as $error){
echo $error, '<br />';
}
} else {
// upload image
}
}
$albums = get_albums();
if(empty($albums)){
echo '<p>You don\'t have any albums. <a href="create_album.php">Create an album</a></p>';
} else {
?>
<form action="" method="post" enctype="multipart/form-data">
<p>Choose a file:<br /><input type="file" name="image" /></p>
<p>
Choose an album:<br />
<select name="album_id">
<?php
foreach ($albums as $album){
echo '<option value="', $album['id'], '">', $album['name'], '</option>';
}
?>
</select>
</p>
<p><input type="submit" value="Upload" /></p>
</form>
<?php
}
include 'template/footer.php';
?>
再次感谢所有对我很多经验丰富的程序员的轻松帖子的耐心! -TechGuy24
答案 0 :(得分:1)
根据代码,如果上传的文件大小> 2mb,则应该如此。然而,计算机永远不会出错,但人类因此调试很重要。
只需替换代码
if($image_size > 2097152){
$errors[] = 'Maximum file size is 2MB';
}
带有调试语句
if($image_size > 2097152){
echo "in if, image size=".$image_size;
$errors[] = 'Maximum file size is 2MB';
} else {
echo "in else, image size=".$image_size;
}
这只是调试的第一步。它可能会也可能不会解决真正的原因。让我们知道输出。
评论后修改:
将该代码放在文件的开头。
echo "files<pre>";
print_r($_FILES);
echo "</pre>imgsz=".$_FILES['image']['size'];
输出是什么。我猜它可能包括
[error] => 1
如果显示错误= 1,请检查http://php.net/manual/en/features.file-upload.errors.php
这意味着php.ini中的upload_max_filesize设置为2MB或更少。一旦人员上传文件大于该文件,它就永远不会到达您的代码,因为PHP默认拒绝该文件。
要解决此问题,请打开php.ini并增加upload_max_filesize的限制。
在评论后编辑3
更改
if($image_size > 2097152){
到
if($_FILES['image']['error']==1){
这将解决问题。