Получение value input type="file" multiple
Здравствуйте друзья. Первый раз создаю тему с просьбой о помощи, обычно долго гуглю и нахожу решение проблемы.
Пишу ajax загрузчик файлов для своего проекта, с использованием возможности множественного выбора файлов. После выбора нескольких файлов создается их список чтоб можно было его отредактировать. Но ума не приложу как редактировать value input с атрибутом multiple. alert($('[type = file]').prop('value')); - Показывает имя только первого файла. Попытка удалить файл из списка таким вот способом document.getElementById('input').files[0]="";Тоже не работает. Инфы в инете ноль |
Цитата:
|
<input type="file" id="myfile" multiple /> <script> document.querySelector('#myfile').onchange = function(e) { files = this.files; for(var a=0;a<files.length;a++) alert(files[a].name);} </script> |
vadim5june, http://learn.javascript.ru/array-iteration
|
Цитата:
|
Про массив files я знаю, и построение списка уже сделал. Вы немного не поняли вопроса.
Допустим пользователь выбрал несколько файлов. И перед отправкой передумал скажем отправлять одну картинку из списка. Нужно чтоб при нажатии на кнопку удаления файла в списке, он удалился из выбранных и их стало к примеру 7 а не 8. Влиять на список, в отличии от получения информации через files не получается ![]() Я начинающий, поэтому не все знаю. И способ решения проблемы реально искал пол дня |
vadim5june,
Цитата:
|
StanislavZ,
1. как Вы отправляете файлы на сервер? 2. как делаете превьюшки? |
Цитата:
|
Цитата:
http://habrahabr.ru/post/112286/ http://www.html5rocks.com/ru/tutorials/file/dndfiles/ |
Конкретно у меня сейчас много трудночитаемого коряво-кода с кусками html, поэтому показать не рискну.
Отправка через XMLHttpRequest. Превью через readAsDataURL. А инфу взял здесь http://xdan.ru/Working-with-files-in...he-Basics.html |
Спасибо. Но API File не нужен, он нужен для построения списка и превью, для чего и использую. Мне не нужно работать с файлами, мне нужно изменить список выбранных в input в сторону уменьшения.
Допустим пользователь выбрал для загрузки картинки 1.jpg, 2.jpg и 3.jpg. Был построен список из выбранных файлов. И тут он увидел что не хочет отправлять 2.jpg. Вот как удалить его из списка выбранных в input |
Цитата:
Если отправка через XMLHttpRequest, тогда в чем проблема? Цитата:
Впрочем, если это объект, можно попытаться удалить его свойство используя оператор delete. Только я не уверен, что в этом случае вы не получите сообщения об ошибке. |
Наверное действительно придется идти по другому пути, глупо уперся в одно когда нужно обойти. Да я подозреваю что написанный на данный момент код очень сильно засирает память, нужно много доделывать. Ну 2 дня всего ж пишу загрузчик. За плагин спасибо, гляну. Наверное тему можно закрыть
|
Цитата:
http://www.html5rocks.com/ru/tutorials/file/filesystem |
Методу toCanvas() можно передавать сразу data URI вместо объекта jquery?
|
StanislavZ, он принимает либо объект канвас, либо объект имэйдж.
|
Да не нужно мне удалять файлы с компа юзера)) Нужно поправит список в value. Ну меня уже переубедили в тупиковости данного пути
|
Тогда нужно все-таки наверно создавать как сейчас изначально, но потом заменять канвасом?
|
объект Image должен быть, но помещать его в DOM не обязательно (насколько я помню)
|
function barr(num, status, funcstroke, prbar){ funcstroke = "prbar = $('#fs"+num+"').find('.bar');"; eval(funcstroke); if(status==1){ prbar.width(15); }; if(status==2){ prbar.width(25); }; if(status==3){ prbar.width(45); }; if(status==4){ prbar.width(65); }; }; $('[type = submit]').click(function(eve){ eve.preventDefault(); var inputFile = document.getElementById('input').files; var length = inputFile.length; var i = 0; var funcstr; while(length > i&&i<8){ funcstr = "var form"+i+" = new FormData(); var xhr"+i+" = new XMLHttpRequest(); xhr"+i+".onreadystatechange = function(){ barr('"+i+"',xhr"+i+".readyState); }; form"+i+".append('photo', inputFile["+i+"]); xhr"+i+".open('post', '/s.php', true); xhr"+i+".send(form"+i+");"; eval(funcstr); i++; }; }); Вот так выглядит код ответственный за отправку файлов. Подозреваю что криво, но работает. Новый объект XMLHttpRequest приходится создавать каждый раз так как когда отправка всего разом, не получалось сделать отдельные прогресбары для файлов, и на сервер приходило почему-то два запроса, первый пустой. Так все нормально, но подозреваю что страшно замусоривает память. Наверное попробую сделать так - буду хранить где-то список номеров "удаленных" пользователем файлов и при обходе files их просто не отправлять. К сожалению эти все плюшки доступны только в chrome, firefox и последней опере. Для других придется доделывать альтернативу. |
Часовой пояс GMT +3, время: 16:44. |