Intereting Posts
xmpphp XMPP, отправить сообщение из скрипта php PDO-> bindParam, PDO-> bindValue и PDO-> closeCursor Laravel 4 – Как использовать «смещение» вместо «страницы» с помощью Eloquent's -> paginate ()? Не удается найти: BlowfishPasswordHasher Cakephp Помещение моделей в каталог библиотеки в Zend Framework Hex2bin не работает, когда я пытаюсь использовать его для преобразования закодированных данных в двоичные FOSUserBundle – как перенаправить уже зарегистрированных пользователей при попытке доступа к login_path Присоединиться к таблице в Symfony 2 Использование XAMPP, как мне заменить PHP 5.3 для PHP 5.2? Как отключить английский словарь по умолчанию в Pspell и использовать только пользовательский словарь? HTML PHP Отобразить имя пользователя после успешного входа в систему Как обфускать JavaScript с помощью PHP? Правильный способ получить время веб-сервера и отобразить его на веб-страницах Является ли хорошей практикой отправлять изображения в строке base64 с android на PHP? использование PHP во внешнем JS

Как я могу избежать <input file> удаляет значения после выбора файлов?

Я работаю над веб-загрузчиком, однако, я нашел что-то, я не знаю, если это проблема. Вот что я нашел:

Когда я выбираю файлы с <input type="file" multiple> , значения всех выбранных файлов хранятся в списке файлов, который находится внутри INPUT. Однако, когда я добавляю больше файлов, файлы, которые я выбираю, заменяют те, которые я выбрал ранее. Я думаю, что это поведение по умолчанию этого элемента DOM.

Что мне нужно сделать, если я хочу добавить больше файлов, не удалив ранее выбранных?

Кто-нибудь знает как это сделать?

Btw: Извините за мой плохой английский, это не мой родной язык. Спасибо.

Вы можете следить за всеми FileList и перебирать их при отправке через ajax: http://jsfiddle.net/46Pk8/ . Однако имейте в виду, что вы можете выбрать (и загрузить) файл более одного раза таким образом. Лучшим способом было бы иметь визуальный список и позволить пользователю добавлять / удалять файлы в / из списка.

 var files = []; // this will contain FileLists $("button:first").on("click", function(e) { $("<input>").prop({ "type": "file", "multiple": true }).on("change", function(e) { files.push(this.files); }).trigger("click"); }); $("button:last").on("click", function(e) { var xhr = new XMLHttpRequest(); xhr.open("POST", "/echo/html/", true); var data = new FormData(); $.each(files, function() { // each FileList $.each(this, function() { // each file inside this list console.log("appending %s", this.name); data.append("files", this); }); }); xhr.onreadystatechange = function(e) { if(xhr.readyState === 4) { console.log("done"); } }; xhr.send(data); }); 

В качестве обходного пути вы можете вставить другой input после выбора файла и скрыть исходный.