Я пытаюсь загрузить несколько файлов. И я также реализовал функцию удаления файлов.Ошибка загрузки нескольких файлов
Код здесь http://jsfiddle.net/SantoshNII/ktLsb0md/6/
var selDiv = "";
var storedFiles = [];
$(document).ready(function() {
$("#files").on("change", handleFileSelect);
selDiv = $("#selectedFiles");
$("#myForm").on("submit", handleForm);
$("body").on("click", ".selFile", removeFile);
});
function handleFileSelect(e) {
var files = e.target.files;
var filesArr = Array.prototype.slice.call(files);
filesArr.forEach(function(f) {
storedFiles.push(f);
var reader = new FileReader();
reader.onload = function (e) {
var html = "<div><img src=\"" + e.target.result + "\" data-file='"+f.name+"' class='selFile' title='Click to remove'>" + f.name + "<br clear=\"left\"/></div>";
selDiv.append(html);
}
reader.readAsDataURL(f);
});
}
function handleForm(e) {
e.preventDefault();
var data = new FormData();
for(var i=0, len=storedFiles.length; i<len; i++) {
data.append('files', storedFiles[i]);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', 'handler.cfm', true);
xhr.onload = function(e) {
if(this.status == 200) {
console.log(e.currentTarget.responseText);
alert(e.currentTarget.responseText + ' items uploaded.');
}
}
xhr.send(data);
}
function removeFile(e) {
var file = $(this).data("file");
for(var i=0;i<storedFiles.length;i++) {
if(storedFiles[i].name === file) {
alert(storedFiles[i]);
storedFiles.splice(i,1);
break;
}
}
$(this).parent().remove();
}
У меня есть проблема с этим. Когда я пытаюсь удалить файл, из пользовательского интерфейса он удаляется, но его сохраняется в бэкэнд, splice
работает неправильно.
Спасибо за помощь.
Вы видите «предупреждение» перед «сращиванием»? – Barmar
Нет, я добавил сейчас, и увидел, что это само происходит как неопределенное! почему var file = $ (this) .data ("file"); не возвращать имя файла? –
Я добавил предупреждение к вашей скрипке, это сработало для меня. И когда я отправил форму, удаленное изображение не было отправлено. Так что все это работает для меня. Может быть, это зависит от браузера? Я использую Chrome 43. – Barmar