Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.09.2014, 13:12
Интересующийся
Отправить личное сообщение для Nupster Посмотреть профиль Найти все сообщения от Nupster
 
Регистрация: 12.08.2014
Сообщений: 20

Кроссбраузерная загрузка файлов с предпросмотром
В общем такая задача - реализовать загрузку с предварительным просмотром, т.е. пользователь выбирает картинку через обычную форму или перетаскивает в область, картинка не загружается на сервер, а обрабатывается на стороне клиента, пользователю показывается миниатюра этой картинки и после нажатия на кнопку "загрузить" происходит загрузка уже на сервер.

Я сделал это используя fileReader, всё работает как надо, но только не в Safari. Потому что, как я понял, там нет поддержки подобной штуки.

Что можно ещё использовать кроме fileReader, чтобы работало во всех браузерах? Мне бы не хотелось отказываться совсем от fileReader, потому планирую просто проверить есть ли у пользователя этот объект и если его нет, использовать что-то другое. Вот только не знаю что.

И такой вопрос, на fileReader получается никак нельзя повесить gif-картинку на момент загрузки файлов?(чтобы она именно "двигалась", а не просто появилась на экране) fileReader.onloadstart и fileReader.onloadend не работают так как, например, аяксовские аналоги beforeSend и complete(на них всё прекрасно вешается и gif "двигается").
Ответить с цитированием
  #2 (permalink)  
Старый 26.09.2014, 14:08
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

fileReader вообще не особо кроссбраузерное решение, только html5 браузеры. Навреное только flash остается

Сообщение от Nupster
И такой вопрос, на fileReader получается никак нельзя повесить gif-картинку на момент загрузки файлов?
Не понял, то ли ты имеешь ввиду гиф прелоадер, пока грузится картинка, то ли то что у тебя после файлридера гиф как статичная картинка отображается?
Ответить с цитированием
  #3 (permalink)  
Старый 26.09.2014, 14:25
Интересующийся
Отправить личное сообщение для Nupster Посмотреть профиль Найти все сообщения от Nupster
 
Регистрация: 12.08.2014
Сообщений: 20

Сообщение от krasovsky Посмотреть сообщение
fileReader вообще не особо кроссбраузерное решение, только html5 браузеры. Навреное только flash остается


Не понял, то ли ты имеешь ввиду гиф прелоадер, пока грузится картинка, то ли то что у тебя после файлридера гиф как статичная картинка отображается?
Я имею ввиду гиф прелоадер. Загрузка через fileReader происходит не асинхронно, как я понял. Т.е. после перетаскивания или выбора картинки(5-8мб) она загружается 3-4 секунды на предпросмотр и в эти секунды браузер как бы "зависает". Потому gif не двигается, а после конца загрузки в событии onloadend скрывается. Вот я и спрашиваю, может можно каким-то образом запустить fileReader асинхронно. Хотя это не так критично, всего несколько секунд, а с картинками до 2мб загрузка происходит практически мгновенно.



Я читал про FormData, но там ведь обязательно необходимо использовать сервер даже при начальной загрузке, т.е. это не подходит. Никаких больше аналогов нет?

Последний раз редактировалось Nupster, 26.09.2014 в 14:28.
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2014, 08:38
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от Nupster
FormData
это для отправки файлов на сервер.

Варианты есть но все они не волшебные - либо открывать превью тем браузерам которые умеют fileReader, а тем что не умеют вставлять "просмотр недоступен", либо для них как раз вставлять гиф прелоадер а тем временем отправлять картинку на сервак в какую нибудь темп директорию и вставлять уже с сервака.
Ответить с цитированием
  #5 (permalink)  
Старый 01.10.2014, 11:16
Интересующийся
Отправить личное сообщение для Nupster Посмотреть профиль Найти все сообщения от Nupster
 
Регистрация: 12.08.2014
Сообщений: 20

Нашёл https://github.com/Jahdrien/FileReader
Правда не получается запустить, Сафари ругается на отсутствие swf файла, всё уже перепробовал, пути везде менял. Никто не пытался использовать это?

С отсутствием swf разобрался, теперь FileReader видит сафари в том числе, но на

fileReader.readAsDataURL(sfile);

ругается
TypeError: 'undefined' is not a function (evaluating 'FileAPIProxy.swfObject.read(file.input, file.name, 'readAsDataURL')')

Могу получить имя, расширение, размер и дату создания файла, а вот то что находится внутри файла, нет

А file.input не задано, поэтому ничего не работает. Но не знаю где его взять.

Последний раз редактировалось Nupster, 01.10.2014 в 14:12.
Ответить с цитированием
  #6 (permalink)  
Старый 03.11.2015, 11:23
Новичок на форуме
Отправить личное сообщение для mak200 Посмотреть профиль Найти все сообщения от mak200
 
Регистрация: 03.11.2015
Сообщений: 6

Решен ли вопрос кроссбраузерной загрузки файла с предпросмотром?
Помогите решить эту задачу http://livreklama.ru/shop/index.php?...&product_id=42
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка файлов на сервер (не хватает вывода ошибки) byFahrenheit Серверные языки и технологии 4 26.10.2016 20:55
Загрузка файлов с превью imediasun1 Элементы интерфейса 3 01.10.2013 14:48
Загрузка БОЛЬШИХ файлов посредством ajax barcelona jQuery 7 12.10.2012 03:37
Загрузка файлов (ajax jquery) q13m jQuery 3 08.03.2012 19:18
Form Plugin, загрузка файлов iNfantry jQuery 1 15.02.2012 22:09