Как стать автором
Обновить

Комментарии 39

НЛО прилетело и опубликовало эту надпись здесь
Круто! Я даже не ожидал, что тут будет техническая информация о реализации. Надеюсь, что это не последний пост подобного характера.
Спасибо, у нас на проекте хотим сделать нечто подобное — у нас люди загружают порой по 100 фото и на каждую приходится тыкать. Ваша статья как раз «в руку».
Жаль, что даже к версиям XX браузеры не избавились от багов в таких важных и давно введённых «фичах»… ну, будем ждать версий XXX, благо, что сейчас все с этим делом ускорились:)
Спасибо за интересную техническую статью. С праздником, Яндекс.Почта! ;-) FYI: www.calend.ru/holidays/0/0/85/
Вы не сталкивались с тем, что в опере onreadystatechange вызывается с status=0 без видимой причины?
нет, а в какой версии и для каких запросов?
12 версия, запросы не через FormData, а через xhr.send(Blob).
При этом оперу колбасит и она начинает формировать битые запросы.
У меня не получается. А можете тест-кейс сделать?
http://jsfiddle.net/D89xd/16/
Правда воспроизводится исключительно при использовании Blob.slice, так что в вашем случае вероятно неактуально.
// если размер больше, чем 4кб, то это точно файл if (file.size > 4096) {
Не совсем так. Встречаются папки, «размер» которых может быть больше 4096 байт. Так что делать окончательный вывод о том что это не папка, оперирую только размерами <4кб — не совсем верно.
Да, но в большинстве случаев это подходит. Не всегда подходит в linux или если диск отформатирован не со стандартным кластером в 4кб, может быть есть еще какие-то кейсы.
Мы эту проверку уберем, когда внедрим поддержку папок, она там появилась, в основом, из-за падений хрома.
А в каких случаях хром падал, есть ли конкретный кейс как его уронить таким образом? Я просто не замечал падений, даже при файлах > 1гб.
в последнем (22) хроме уже все ок
У меня и в 21 хроме не было падений, отсюда и возник этот вопрос.
если делать abort в filereader, то у нас стабильно через 1-15 минут падала вкладка
кстати, может и в 21-м уже где-то поправили, мы зарелизились в один день с ним и наблюдали эти падения
А зачем делать abort? Можно было изначально читать не весь файл, а предварительно сделать slice на 1 байт.
Со slice хорошая идея, надо проверить. Спасибо!
Было бы хорошо, если бы весь хотя бы клиентский код был доступен в виде готового решения для простых смертных.
Спасибо! Давно пора было сделать, на самом деле. И ещё в Я.Фотках сделайте нормальный загрузчик, пожалуйста.
Без FormData можно обойтись. Для Оперы 11.60 и выше это можно сделать без проблем(ну или почти без проблем). Кстати, как это сделать, я уже писал почти год назад
Большое спасибо за это нововведение. Я то его сразу заметил, так как с обычным загрузчиком возникало много проблем на работе.
Дело в том что там криво настроенный прокси поднят (не мной, я только пользователь), так вот приходилось каждый раз сначала пытаться загрузить файл в аттач, а когда это не выходило (ошибка подключения) нажимать на ссылку воспользоваться обычным загрузчиком, который в принципе работал (хоть и не был таким удобным.
Drag&Drop загрузчик уже опробовал, ооочень удобно стало, и не только из-за исчезнувших технических проблем (я на двух мониторах работаю — с одного на другой очень удобно файлы перетаскивать).
Тоже заметил — спасибо, удобно. Осталось только сделать, чтобы при клике на «Спам» письма с этого ящика больше не приходили, а то в этой кнопке вообще нет смысла — столько раз нажимал, а письма (такие же) все приходят и приходят. Извиняюсь за небольшой оффтоп.
а напишите мне, пожалуйста, в личку логин и id-писем (из урла), мы проверим
А мне кажется спорный момент загружать один из 10 файлов на яндекс.диск, а остальные вкладывать в письмо. Ведь когда смотришь письмо, есть кнопка «Сохранить все файлы/вложения» и в этом случае она теряет смысл. Было бы удобно, если бы в случае 10 файлов (с одним большим) они загружались как пакет (папка) на яндекс.диск и была возможность так же скачать их одним zip-архивом.
«мы традиционно не раскрываем своих планов» ©
Почта еще сегодня очень порадовала, вывесив при входе что-то вроде «Теперь почта доступна на английском, кликните здесь, чтобы включить».
Скорее всего у вас браузер или ОС не на русском языке.
Это не сарказм, я на самом деле переключился на английский. Так что да — и браузер, и ОС не на русском :)
значит мы правильно вам подсказали :)
Очередное доказательство жудкой сложности и неказистости совремнной веб-платформы: такие тривиальные задачи вызывают такое количество роблем :-(

Яндексу зачет за такое глубокое исследование роблемы и любовь к деталям в реализации.
Сам не так давно долго возился с доработкой d&d аплоадера, так что очень хорошо понимаю эти мучения.
Не совсем понял необходимость пляски с FileReader, если у вас уже есть .dataTransfer с типами.
Чтобы не загружать папки
Все, понял, не загружать для старших браузеров. А почему родилось такое предположение, что попытка загрузки папки — это скорее всего ошибка пользователя? Или это для стандартизации возможностей?
Это нормальная возможность для драг-н-дропа, но с папками из браузера ничего пока сделать нельзя (кроме chrome 21+), поэтому их надо отсеивать
супер статья
Вот бы вы с Mail.ru сделали единую современню кроссбраузерную OpenSource поддерживаемую и обновляемую библиотеку со всеми этими своими фичами определения возможностей, множественной загрузкой, flash fallback, ресайзом картинок в браузере — миллионы людей бы вам спасибо сказали.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий