Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/145: Рейтинг темы: голосов - 145, средняя оценка - 4.59
 Аватар для amadey18
92 / 92 / 51
Регистрация: 29.04.2013
Сообщений: 361

Отображение загружаемого (еще не загруженного) изображения input file

24.11.2014, 12:53. Показов 29737. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Видел на некоторый сайтах, когда при выборе изображения в поле <input type="file"> они сразу выводились пользователю, без загрузки оного на сервер.
Типа этого примера jQuery-File-Upload.
Заметил, что там используют canvas для отображения файла, а какие еще есть варианты вывода?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2014, 12:53
Ответы с готовыми решениями:

Отображение изображения загруженного с сервера
На форме разместил элемент: &lt;asp:Image ID=&quot;Image1&quot; runat=&quot;server&quot; Width=&quot;200&quot; Height=&quot;200&quot; /&gt; но изображение не отображается,...

Изменение изображения input type=file
Здравствуйте. Подскажите, как решить следующую проблему: Есть форма для записи авторов в БД &lt;form...

Размер загружаемого изображения
Друзья, как изменить скрипт чтобы изображения меняли свой размер. $file_name= strtolower(implode('.',...

13
 Аватар для whiteapps
414 / 379 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
24.11.2014, 13:44
Лучший ответ Сообщение было отмечено amadey18 как решение

Решение

amadey18,

HTML5
1
2
<input type="file" id="files" name="files[]"  multiple />
<ul id="list"></ul>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  function showFile(e) {
    var files = e.target.files;
    for (var i = 0, f; f = files[i]; i++) {
      if (!f.type.match('image.*')) continue;
      var fr = new FileReader();
      fr.onload = (function(theFile) {
        return function(e) {
          var li = document.createElement('li');
          li.innerHTML = "<img src='" + e.target.result + "' />";
          document.getElementById('list').insertBefore(li, null);
        };
      })(f);
 
      fr.readAsDataURL(f);
    }
  }
 
  document.getElementById('files').addEventListener('change', showFile, false);
1
 Аватар для amadey18
92 / 92 / 51
Регистрация: 29.04.2013
Сообщений: 361
24.11.2014, 14:35  [ТС]
whiteapps, Все гениальное просто, спасибо. Зря я посмотрел source рисунка
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 21
25.11.2014, 10:51
Добрый день.

В данном примере генерируется элемент Img. Подскажите, как реализовать, если на странице уже есть элемент img и в него надо просто вставить данный превью картинки???
0
 Аватар для whiteapps
414 / 379 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
25.11.2014, 10:57
Agafon87, у элемент Img есть атрибут src
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 21
25.11.2014, 11:15
whiteapps, если я правильно понимаю то в данном коде мне достаточно поменять строку

JavaScript
1
2
li.innerHTML = "<img src='" + e.target.result + "' />";
          document.getElementById('list').insertBefore(li, null);
на

JavaScript
1
document.getElementById('id').attributes('src', e.target.result);
поправьте меня если я заблуждаюсь.
0
 Аватар для whiteapps
414 / 379 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
25.11.2014, 11:49
Agafon87,
можно проще

JavaScript
1
document.getElementById("id").src = e.target.result;
1
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
26.11.2014, 10:15
whiteapps, зря в цикле файлридер создаете и обновляете онлоад. Лучше так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var showFile = ( function() {
  var fr = new FileReader;
  fr.onload = function(e) {
      var li = document.createElement('li');
      li.innerHTML = "<img src='" + e.target.result + "' >";
      document.getElementById( 'list' ).appendChild(li);
  };
  return function(e) {
    var files = e.target.files, file, i;
    for (i = 0; file = files[i]; i++) {
      if (!file.type.match('image.*')) continue;
      fr.readAsDataURL(file);
    }
  }
} )()
  document.getElementById('files').addEventListener('change', showFile, false);
Добавлено через 2 часа 12 минут
whiteapps, сам себя поправлю. В первом моём варианте срабатывает загрузка только одного файла, цикл пробегает по всем картинкам до срабатывания первого онлоада. Срабатывает только последний. Исправил так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var showFile = (function () {
    var fr = new FileReader,
        i = 0,
        files, file;
    
    fr.onload = function (e) {
        var li;
        if (file.type.match('image.*')) {
            li = document.createElement('li');
            li.innerHTML = "<img src='" + e.target.result + "' >";
            document.getElementById('list').appendChild(li);
        }
            file = files[++i];
            if (file) {
                fr.readAsDataURL(file)
            } else {
                i = 0;
            }
    }
    
    return function (e) {
        files = e.target.files;
        file = files[i];
        if (files) {
            while (i < files.length && !file.type.match('image.*')) {
                file = files[++i];
            }
            if (file) fr.readAsDataURL(files[i])
        }
    }
 
})()
 
document.getElementById('files').addEventListener('change', showFile, false);
1
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 21
28.11.2014, 14:20
А как определить, куда сохраняется само изображение? Ведь превьюшка указывает на файл, который где-то в памяти располагается. И можно ли это место хранения поменять???
0
 Аватар для amadey18
92 / 92 / 51
Регистрация: 29.04.2013
Сообщений: 361
04.12.2014, 11:18  [ТС]
Agafon87, это уже меняется при сохранении, т.е. при отправке формы. В данном примере файл хранится в самом src рисунка, если посмотрите на исходный код Img, то увидите рисунок(набор символов). А файл выбранный посредством input type="file" сохраняет его во временную директорию сервера, для сохранения необходимо использвать функцию move_uploaded_file
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 21
11.12.2014, 13:25
Подскажите пожалуйста, а как узнать в этом примере ширину и высоту рисунка в пикселях? Я не понимаю куда смотреть.
0
 Аватар для amadey18
92 / 92 / 51
Регистрация: 29.04.2013
Сообщений: 361
11.12.2014, 14:13  [ТС]
Agafon87, задать ширину и высоту рисунка можно посредством CSS на img.
1
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
11.12.2014, 14:17
Agafon87, после загрузки картинки в img, можно посмотреть свойство img. .width и .height.
2
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 1
21.12.2015, 14:03
а как получить название загружаемого файла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2015, 14:03
Помогаю со студенческими работами здесь

Получить названия файлов из input file в input text
Как переместить названия файла из input type file в input type text с помощью javascript?

Определить расширение загружаемого изображения
Здравствуйте. Подскажите, как определить расширение загружаемого изображения(.png, .jpeg)?

Проверка сторон загружаемого изображения
Здравствуйте друзья! Требовалось проверить стороны загружаемого изображения, чего я добился функцией getimagesize() ...

Свойства загруженного изображения
Ребята, помогите начинающей) В Image загружаю изображение. Нужно вывести на форму также его свойства. Как это сделать? Где они...

Обновление изображения, загруженного в БД
Здравствуйте. Как обновить уже загруженное изображение в БД(загружал так)? Я пытаюсь обновить изображение наобум составленным запросом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru