2015-01-14 5 views
3

HTML код:Отправка данных входных файлов с помощью AJAX

<input id="fileSelect" type="file" id="file" name="files[]" multiple="multiple" accept="image/*" /> 

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

JavaScript:

jQuery.ajax({ 
    url: 'insertfiles.php', 
    type: "POST", 
    data: { 
     file: // array of selected files. 
    }, 
    success: function(data){ 
    }, 
    error: function(data){ 
     alert('Sorry.'); 
    } 
}); 
+0

Единственный способ отправки файлов с помощью AJAX является с 'FormData' см [*** ЭТОЙ ***] (http://stackoverflow.com/questions/166221/how-can-i-upload-files-асинхронно # answer-8758614) – adeneo

+0

http://stackoverflow.com/questions/10899384/uploading-both-data-and-files-in-one-form-using-ajax – Nick

ответ

2

Современные браузеры, поддерживающие HTML5 файла вещи имеют в <input> элемента свойство "файлы". Это даст вам ссылку на список файлов, которая имеет свойство length.

Поскольку объект уже является array, значит, вам просто нужно получить к нему доступ или перебрать его.

JS

var input = document.getElementById('id'); 
console.log(input.files); 

for (var i = 0; i < input.files.length; i++) { 
console.log(input.files[i]); 
} 
+0

alert (input.files [i]), дающий мне объект. это правильно? –

+0

@ HassanAli yes правильно, это массив объектов File, каждый файл имеет такие свойства, как имя, тип и размер. Попробуйте оповещение (input.files [i] .name); – ianaya89

+0

получил это спасибо., –

-6

Это мой код для многократной загрузки файла. Пожалуйста, обратитесь это

$fileCount = count($_FILES); 
for($i=0; $i < $fileCount; $i++) { 
$fileName = (!empty($_FILES["file-$i"]["name"])) ? $_FILES["file-$i"]["name"] : ''; 

$hostName = "sql111.byethost7.com"; 
$userName = "b7_15386696"; 
$passWord = "9827322563"; 
$dbName = "b7_15386696_db_printer"; 

$query = "INSERT INTO print_table (NAME, EMAIL, PHONE, ADDRESS, FILENAME, NUMBEROFCOPY, SREQUIREMENTS, FIELD1) 
VALUES ('$name', '$emailId', '$phone', '$address', '$fileName', '$ncopy', '$requirements', CONVERT_TZ(NOW(),'+00:00','+09:30'))"; 

$connect = mysqli_connect($hostName,"$userName","$passWord","$dbName"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
+6

Знаете ли вы, что вы ввели учетные данные базы данных? – Luceos

3
var formData = new FormData(this); 
      debugger; 
      $.ajax({ 
       url: formURL, 
       type: 'POST', 
       data: formData, 
       mimeType: "multipart/form-data", 
       contentType: false, 
       cache: false, 
       processData: false, 
       success: function (data, textStatus, jqXHR) { 
        debugger; 


       }, 
       error: function (jqXHR, textStatus, errorThrown) { 


       } 
      }); 

Приведенный выше код поможет вам размещать контент плюс файлы в одном отправить вызов.

Сообщение параметр метода должен включать HttpPostedFileBase[] file поэтому список файлов появится в этом файле параметр

2

Используйте код ниже.

var formData = new FormData($("#formid")[0]); 
jQuery.ajax 
({ 
     url: 'insertfiles.php', 
     type: "POST", 
     data: formData; 
     success: function(data) 
     { 
     }, 
     error: function(data) 
     { 
      alert('Sorry.'); 
     } 
cache: false, 
     contentType: false, 
     processData: false 
}); 

Надеется, что это помогает вам

+1

Это отправит как текст, так и файлы –

+0

[object FormData], как проверить данные в alert()? –

+2

не могли бы вы объяснить «var formData = new FormData ($ (« # formid ») [0]);' – KBK

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