Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 11.01.2018, 21:59
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Теоретически должно работать.
<div id="files">
  <input type="file" multiple accept="image/*"/>
</div>
<div id="result"></div>
<style>
  .img_preview{display:inline-block;}
  .thumbnail{max-width:100px;}
  #files input{display:none;}
  #files input:last-child{display:block;}
</style>
<script>
(function(){
  if(!window.File || !window.FileList || !window.FileReader)
    return console.log("Your browser does not support File API");

  document.getElementById("files").addEventListener("change", function(event) {
    var clone = event.target.cloneNode(),
        files = event.target.files,
        output = document.getElementById("result");

    clone.value=null;
    this.appendChild(clone);
    this.focus();
    for(var i = 0; i < files.length; i++) {
      var file = files[i];
      if(!file.type.match('image'))
        continue;

      var picReader = new FileReader();
      picReader.addEventListener("load", function(event) {
        var picFile = event.target;
        var div = document.createElement("div");
        div.className = 'img_preview';
        div.innerHTML = "<img class='thumbnail' src='"
          + picFile.result + "'" + "title='" + picFile.name + "'/>";
        output.insertBefore(div, null);
      });
      picReader.readAsDataURL(file);
    }
  });
})();
</script>

Последний раз редактировалось Nexus, 11.01.2018 в 22:02.
Ответить с цитированием
  #12 (permalink)  
Старый 11.01.2018, 22:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от рони
копайте в сторону FormData
Вроде бы как проблема и так понятна - поле с мультивыбором, но это не означает, что оно запомнит все последовательные выборы. Так что проблема не в том как отправить, а в "борьбе с естественны". )
Ответить с цитированием
  #13 (permalink)  
Старый 11.01.2018, 22:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
как ни посмотри - наиболее геморойный вариант
Drag & drop для поля с мультивыбором при выборе из разных каталогов, иначе никак.
Ответить с цитированием
  #14 (permalink)  
Старый 11.01.2018, 22:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от laimas
Так что проблема не в том как отправить,
а в чём? разве нельзя добавить несколько картинок в FormData из output и отправить ajax
Ответить с цитированием
  #15 (permalink)  
Старый 12.01.2018, 05:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от рони
разве нельзя добавить несколько картинок в FormData из output и отправить ajax
Как base64?
Ответить с цитированием
  #16 (permalink)  
Старый 12.01.2018, 08:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Сообщение от laimas
Как base64?
Скорее всего файл не будет кодироваться в base64.
https://developer.mozilla.org/ru/doc...% D0%B8%D1%81
Ответить с цитированием
  #17 (permalink)  
Старый 12.01.2018, 08:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
Скорее всего файл не будет кодироваться в base64.
Это почему?

picReader.readAsDataURL(file);

Взять из src base64 и отправить можно. Но это будет объем в три раза меньше разрешенного сервером, и это будут данные в $_POST.
Ответить с цитированием
  #18 (permalink)  
Старый 12.01.2018, 09:48
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Сообщение от laimas
Это почему?
FormData.append может принимать в кач-ве значения экземпляр класса File.
Сервер, по идее, должен получить файл не в глобальном объекте _post, но _files.
Ответить с цитированием
  #19 (permalink)  
Старый 12.01.2018, 09:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Какой file, если речь об output, который html? )
Ответить с цитированием
  #20 (permalink)  
Старый 12.01.2018, 10:17
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

laimas, виноват, упустил упоминание "output" в посте рони.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавное пролистывание картинок слайдера Corazon Элементы интерфейса 3 30.01.2017 22:07
Смена картинок на JS. Помогите реализовать! Aggao Элементы интерфейса 3 27.11.2014 23:32
Как можно узнать\вычислить кол-во доступных картинок desertFox Общие вопросы Javascript 5 18.08.2014 14:41
Автопереключатель картинок Vempel Общие вопросы Javascript 0 03.10.2013 18:36
Загрузчик картинок Livanderiaamarum Общие вопросы Javascript 1 15.01.2012 17:21