Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2019, 10:21
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

FileReader()
Доброго времени суток, уважаемые форумчане,

Метод FileReader() не устаревший?
Вообще требуется отобразить картинку, загруженную в input type = 'file', бэкграундом одного из div'ов.
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2019, 10:49
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

FileReader - не метод, а класс и нет, не устаревший.
Вместо FileReader'а можете использовать URL.createObjectURL.
Уничтожать только ссылку не забывайте по необходимости.
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2019, 11:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
не устаревший
Салага еще, только недавно копытца обмывали.
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2019, 16:04
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

Nexus,
laimas,
а можно установить эту картинку в качестве background-image?
Ответить с цитированием
  #5 (permalink)  
Старый 04.02.2019, 16:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

atanov, можно.
Примерно так:
target.style.backgroundImage='url('+URL.createObjectURL(e.target.files[0])+')';
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2019, 16:17
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

Nexus,
Спасибо!
А всё-таки, чем URL.createObjectURL лучше FileReader?
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2019, 16:34
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

atanov, меньшим кол-вом кода, синхронностью.
Ответить с цитированием
  #8 (permalink)  
Старый 04.02.2019, 17:03
Профессор
Отправить личное сообщение для atanov Посмотреть профиль Найти все сообщения от atanov
 
Регистрация: 27.06.2016
Сообщений: 180

Nexus,
синхронность это преимущество?
Ответить с цитированием
  #9 (permalink)  
Старый 04.02.2019, 17:10
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

atanov, пожалуй нет, но в этом конкретном случае да, т.к. не нужно оборачивать все в обещание (Promise) или выполнять остальной код в callback'е.
Ответить с цитированием
  #10 (permalink)  
Старый 05.02.2019, 10:30
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от atanov
А всё-таки, чем URL.createObjectURL лучше FileReader?
помимо синхронности, этот вариант ещё и более экономичный. По крайней мере, не понадобится копия файла в виде строки base64 (которая на 33.3% длиннее к тому же) и вообще возня с этим base64 туда-сюда.

мелкое неудобство - надо не забывать вызвать URL.revokeObjectURL, потому что иначе файлы остаются висеть в памяти до перезагрузки страницы. Впрочем, если у тебя не синглпейдж, то не проблема.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами, FileReader DivMan Элементы интерфейса 1 10.12.2016 14:25
Filereader В ie11 cript Элементы интерфейса 3 18.11.2014 21:58
FileReader, чтение первых n строк kidar2 Общие вопросы Javascript 1 11.02.2014 15:37
проблема с FileReader() в Chrome jo-cry Opera, Safari и др. 3 14.08.2011 04:54
FileReader проблема с локальными файлами kostysh Общие вопросы Javascript 4 24.11.2010 17:59