开发者

Mutliple file upload with jquery, php array problem

开发者 https://www.devze.com 2022-12-18 03:00 出处:网络
I\'m trying to make a multi file uploader. I\'m using \"Multiple File Upload Magic With Unobtrusive Javascript\"

I'm trying to make a multi file uploader.

I'm using "Multiple File Upload Magic With Unobtrusive Javascript"

None of the files upload. I'm pretty sure this is because it's putting the files into a array and I don't have my php set to handle the array (which I don't know how to do). Any help on what I'm doing wrong?

Thanks in advance! :)

JQUERY CODE


$(document).ready(function(){   
    var fileMax = 12;
    $('#element_input').after('<div id="files_list"></div>');
        $("input.upload").change(function(){
            doIt(this, fileMax);
        });
    }); 

    function doIt(obj, fm) {
        if($('input.upload').size() > fm) {alert('Max files is '+fm); obj.value='';return true;}
            $(obj).hide();
            $(obj).parent().prepend('<input type="file" class="upload" name="fileX[]" />').find("input").change(function() {doIt(this, fm)});
        var v = obj.value;
        if(v != '') {
            $("div#files_list").append('<div>'+v+'<input type="button" class="remove" value="" /></div>')
            .find("input").click(function(){
            $(this).parent().remove();
            $(obj).remove();
   开发者_StackOverflow         return true;
        });
    }
};

HTML CODE


<form action="myPhpCodeIsBelow.php" method="post" enctype="multipart/form-data" name="asdf" id="asdf">
  <div id="mUpload">
    <input type="file" id="element_input" class="upload" name="fileX[]" />
    <input type="submit" value="Upload" />
  </div>
</form>

PHP CODE


$target = "upload/";
$target = $target . $_FILES['fileX']['name'];
$ok=1;

if(move_uploaded_file($_FILES['fileX']['tmp_name'], $target)) {
    echo "The file " . $_FILES['fileX']['name'] . " has been uploaded";
    } 
else {
    echo "There was a problem uploading" . $_FILES['fileX']['name'] . ". Sorry";
    }


The $_FILES array actually looks like this:

array (
  'fileX' => 
  array (
    'name' => 
    array (
      0 => '',
      1 => 'Temp1.jpg',
      2 => 'Temp2.jpg',
    ),
    'type' => 
    array (
      0 => '',
      1 => 'image/jpeg',
      2 => 'image/jpeg',
    ),
    'tmp_name' => 
    array (
      0 => '',
      1 => '/tmp/php52.tmp',
      2 => '/tmp/php53.tmp',
    ),
    'error' => 
    array (
      0 => 4,
      1 => 0,
      2 => 0,
    ),
    'size' => 
    array (
      0 => 0,
      1 => 83794,
      2 => 105542,
    ),
  ),
)

That means your code should look more like this:

foreach($_FILES['fileX']['name'] as $index => $name) {
    if(empty($name)) continue;

    $target = "upload/";
    $target = $target . $name;
    $ok=1;

    if(move_uploaded_file($_FILES['fileX']['tmp_name'][$index], $target))
    {
        echo "The file " . $name . " has been uploaded";
    } 
    else
    {
        echo "There was a problem uploading" . $name . ". Sorry";
    }
}

And you should learn to indent your code better!

0

精彩评论

暂无评论...
验证码 换一张
取 消