tags:

views:

60

answers:

2

I swear this script worked fine last night but can't get it to work today. It's not getting inside of the foreach loop though and i don't know why. the $_FILES array is null even if i select a file and click submit.

Basically this script has a file input tag and using jquery, if a user selects a file, it adds another file input tag. When the submit button is clicked, the PHP is called.

<?php
//used for firePHP
include('PHP/FirePHPCore/fb.php');
ob_start();


$success = false;
$error = "";
$allowable_types = array(
    'image/jpeg',
    'image/pjpeg',
    'image/jpg',
    'image/jpe',
    'image/gif',
    'image/png'
);



#################################################################
//NOT GETTING INSIDE THE FOREACH LOOP. $_FILES array is always null
##################################################################
//loops through the files that the user has chosen to be uploaded them and moves them to the Images/uploaded folder
foreach($_FILES as $key => $value) {
    if(!empty($_FILES[$key])) {
        if($_FILES[$key]['error'] == 0) {
            if(in_array($_FILES[$key]['type'], $allowable_types) && ($_FILES[$key]['size'] < 5000000)) {
                if(!file_exists("Images/uploaded/".$_FILES[$key]['name'])) {
                    move_uploaded_file($_FILES[$key]['tmp_name'], "Images/uploaded/".$_FILES[$key]['name']);
                    $success = true;
                } else {
                    $error = "<h3 class=\"bad\">At least one of the files already exists</h3>";
                }
            } else {
                $error = "<h3 class=\"bad\">At least one of the files you've selected is either too large or not the correct file type</h3>";
            }
        } elseif($_FILES[$key]['error'] == 4) { 

        } else {
            $error = "<h3 class=\"bad\">An error occurred while trying to upload one of the files</h3>";
        }
    } else {
        $error = "<h3 class=\"bad\">You need to select a file</h3>";
    } 
}



?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1205">
<link rel="stylesheet" type="text/css" href="CSS/reset.css" />
<link rel="stylesheet" type="text/css" href="CSS/uploadFile.css" />
<link rel="stylesheet" type="text/css" href="CSS/galleria.css" />
<script type="text/ecmascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
<script type="text/javascript" src="JS/galleria.jquery.js"></script>

<script type="text/javascript"> 


    $(document).ready(function() { 

        var i = 1;

        //gives the first li the class .active so that it shows the large version as if it's been clicked. 
        //-- used for the gallery page
        $('#content ul.gallery li:first-child').addClass('active');

        //fades the links on hover -- used for the nav links
        $('#header ul li a').hover(function() {
            $(this).fadeTo(300, 0.3);
        },function() {
            $(this).fadeTo(300, 1);
        });



            $('input:file:last').live('change',function() {
                var file = $(this).val();
                if(file !== null && file !== "") {
                    if(i < 6) {
                        $(this).after("<input type=\"file\" name=\"uploadedFile"+i+"\" value=\"\" />");
                        i++;
                    }
                }
            });
    }); 
</script>
<meta name="keywords" content="Steph Mcclisch Photography Portfolio Pictures" />
<title>Steph McClish Photography</title>
</head>

<body>
<div id="floater"></div>
<div id="wrapper">

    <div id="content">
        <?php 
        if($success) {
        echo "<h3 class=\"good\">Files Uploaded Successfully!</h3>";
        } elseif ($error) {
        echo $error;
        }
    ?>
        <h4>Choose the files to be uploaded</h4>
        <form action="<?php $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
            <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
            <input type="file" name="uploadedFile0" value="" />
            <button type="submit" name="login">Submit</button>
        </form>
        <h5><a href="PHP/Manage.php">Manage Files/Folders</a></h5>
    </div>


</div>
</body>
</html>
+1  A: 

It all had to do with my Wamp server setup. On the wamp icon in the menu bar i went php>php settings>file uploads. Just clicked that once and it fixed everything.

Catfish
Accept this answer as correct, if that is the solution.
Nick Presta
You can't accept your own answer for 2 days.
Catfish
+1  A: 

On windows XP, SP2, Explorer at times fails to upload files without extensions.

$_FILES array is null in that case. Microsoft says its a security feature(!)

The only solution we could come up is to enforce uploaded file to have an extension.

Asif