Intereting Posts
swig нет соответствующей функции для перегрузки Модуль не может быть инициализирован zf3 уже искали Интернет PhpStorm найти все устаревшие способы использования в проекте Где найти php_imagick.dll для php 5.5.12 для Windows wampserver 2.5? Как передать json-данные в html с php? PHP Использование валидации на стороне клиента и на стороне сервера БЕЗ использования стороннего кода Как скомпилировать расширение для PHP 5.3 для Windows как DLL? Как я могу установить ограничение по времени на вызов `exec ()`? Как автоматически обновить таблицу, когда другая таблица обновляется на другом сервере mysql? после того, как функция jquery вызова ajax не работает должным образом Стол для чтения и записи Отправьте форму ajax и оставайтесь на той же странице, которая не работает Как преобразовать массив массивов или объектов в ассоциативный массив? PHP-функция подключения mysqli Как я могу установить флажок с php?

Загрузка нескольких файлов ajax с помощью php

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

AJAX

function submitForm() { console.log("submit event"); var fd = new FormData(document.getElementById("fileinfo")); fd.append("label", "sound"); fd.append('label', document.getElementById('selected_folder').value); $.ajax({ url: "upload.php", type: "POST", data: fd, enctype: 'multipart/form-data', processData: false, // tell jQuery not to process the data contentType: false // tell jQuery not to set contentType }).done(function( data ) { console.log("PHP Output:"); console.log( data ); alert("upload success!") }); return false; } 

PHP

 <?php if ($_POST["label"]) { $subfolder = $_POST["label"]; } $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < (10000*1024)) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { // echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { $filename = $_FILES["file"]["name"]; echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("uploaded/".$subfolder .'/'. $filename)) { //already exists } else { move_uploaded_file($_FILES["file"]["tmp_name"], "uploaded/".$subfolder .'/'. $filename); // "Stored in: " . "uploaded/".$subfolder .'/'. $filename; } } } else { echo "Invalid file"; } ?> 

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

HTML

 <input id="fuDocument" type="file" accept="image/*" multiple="multiple" /> 

JS

 var fd = new FormData(); var files = $("#fuDocument").get(0).files; // this is my file input in which We can select multiple files. fd.append("label", "sound"); for (var i = 0; i < files.length; i++) { fd.append("UploadedImage" + i, files[i]); } $.ajax({ type: "POST", url: 'Url', contentType: false, processData: false, data: fd, success: function (e) { alert("success"); } }) 

Теперь передайте fd объект в ваш ajax-вызов, он работает с моим кодом

Сначала вы должны использовать атрибут «multiple» с тегом ввода. подобно

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

Затем в функции Javascript onChange –

  var data = new FormData(); var imgData = document.getElementById('fileUpload'); for (var i = 0; i < imgData.files.length; i++) { data.append('my_file[]', imgData.files[i], imgData.files[i].name); } //now call ajax $.ajax({ url: "upload.php", type: "POST", data: data, enctype: 'multipart/form-data', processData: false, // tell jQuery not to process the data contentType: false // tell jQuery not to set contentType }).done(function( data ) { console.log("PHP Output:"); console.log( data ); alert("upload success!") }); 

И ваш файл будет загружен