I have an issue with my php photo upload script. When I upload a file that exceeds 2mb, it won’t show that error when I click upload..yet it’s there in my script..any idea why this is? For ex. I uploaded a .wma file and It was 2.38MB..that exceeds the limit..but yet it just says “file type not allowed” why didn’t it show the exceeds 2mb error as well?
Here is my script:
<?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';
?>
Thanks again for all of the patience with my probably easy posts for a lot of you more experienced programmers out there!
-TechGuy24
As per code, it should, if uploaded file size is >2mb. However, computers never make mistake but the human and thus debugging is important.
Just replace the code
with debug statements
This is just a first step of debugging. It may or may not fix the real cause. Let us know the output.
Edit after comment:
Put that code in the starting of the file.
What is the output. I guess it might include
If it show error=1, Check http://php.net/manual/en/features.file-upload.errors.php
That mean your upload_max_filesize in php.ini is set to 2MB or less. As soon as person upload file bigger than that, it never reach your code as PHP reject the file by default.
To fix that, open php.ini and increase the limit of upload_max_filesize.
Edit 3 after comment
Change
to
That will fix the issue.