2015-09-14 3 views
1

У меня есть простая форма, которая позволяет пользователю загружать текст комментария и файлы на сервер. Когда форма отправляется, процесс загрузки файла обрабатывается в файле «upload.php». Он отлично работает для загрузки только 1 файла.с помощью ajax для загрузки нескольких файлов

Я хотел бы мой сценарий, чтобы иметь возможность загружать несколько файлов с помощью AJAX.

Это то, что я сделал до сих пор -

HTML (часть):

<input type='file' name='file[]' maxlength='1' accept="image/jpg,image/png,image/jpeg,image/gif" /> 
<input type='file' name='file[]' maxlength='1' accept="image/jpg,image/png,image/jpeg,image/gif" /> 
<input type='file' name='file[]' maxlength='1' accept="image/jpg,image/png,image/jpeg,image/gif" /> 

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

JS

$(function() { 
    $(document).on('submit','form',function(e) { 
     e.preventDefault(); 

    var $form = $(this); 
    var file_data = $form.find('.file-field').prop('files')[0]; 
    var form_data = new FormData();  
    form_data.append('act', act); 
    form_data.append('comment[text]', $form.find('.comment-field').val()); 
    form_data.append('comment[pageName]', $form.find('.pagename-field').val()); 

    form_data.append('file[]', file_data); 



    $.ajax({ 
      type: "POST", 
      url: "ajax/addComment.php", 

      dataType: 'text', 
      cache: false, 
      contentType: false, 
      processData: false, 
      async: false, 
      data: form_data, 
      success: function(data) 
      { 
       $("#loader").hide(); 
       $('#commentsBox'+$form.find('.refid-field').val()).prepend(data); 
       $("form").reset(); 

      } 

     }); 

    return false; 

    }); 
}); 
+0

Привет, roi, ваш файл upload.php также необходим, чтобы понять, что вы использовали цикл, чтобы проверить, что $ _FILES имеют один файл или несколько. Подробнее ... вам нужно проверить, что отправлено с помощью var_base form_data javascript. –

+0

@MarmikBhatt - привет, я буду в порядке, если upload.php получит файлы. я просто имею проблему, чтобы перенести их на серверную сторону ... – Roi

ответ

0

Здесь Вы можете получить содержимое файла, связанного с первым входом файла.

var file_data = $form.find('.file-field').prop('files')[0]; 

и несколько строк позже (это имело бы больше смысла, находясь в соседних линиях) вы положили, что данные в объекте данных формы:

form_data.append('file[]', file_data); 

Просто использовать a for и замените 0 переменной цикла.

+0

Могу ли вы, пожалуйста, помочь мне с циклом «за» внутри скрипта? – Roi

+0

В чем проблема? Вы просто перебираете массив (или, по крайней мере, достаточно близко к массиву, который не имеет значения), и это JavaScript 101. – Quentin

+0

проблема, если я недостаточно знаком с синтаксисом js ...:/I ' m использовать для работы на стороне сервера ... – Roi

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