Загрузка Mutliple файла с jquery, проблема с массивом php - PullRequest
0 голосов
/ 28 января 2010

Я пытаюсь сделать загрузчик нескольких файлов.
Я использую " Волшебство множественной загрузки файлов с ненавязчивым Javascript "

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

Заранее спасибо! :)

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

1 Ответ

1 голос
/ 28 января 2010

Массив $_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";
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...