2010-01-27 2 views
0

Я пытаюсь создать многофайловый загрузчик.
Я использую «Multiple File Upload Magic With Unobtrusive Javascript»Загрузка файла Mutliple с jquery, проблема с массивом php

Ни один из файлов не загружается. Я уверен, что это потому, что он помещает файлы в массив, и у меня нет моего набора php для обработки массива (который я не знаю, как это сделать). Любая помощь в том, что я делаю неправильно?

Заранее благодарен! :)

Jquery КОД


$(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(); 
      return true; 
     }); 
    } 
}; 

HTML КОД


<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 КОД


$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"; 
    } 
+0

Что вы хотите сказать? Что не работает? –

+0

Как заставить скрипт загружать файлы. Сейчас это не так, и я не получаю ошибок. – PHPNooblet

ответ

1

$_FILES массив на самом деле выглядит следующим образом:

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, 
    ), 
), 
) 

Это означает, что ваш код должен выглядеть следующим образом:

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"; 
    } 
} 

И вы должны научиться отступа кода лучше!

+0

Я собираюсь попробовать это прямо сейчас. Спасибо – PHPNooblet

+1

Это сработало! Еще раз спасибо. – PHPNooblet

Смежные вопросы