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

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

Тема уже изъезжана в доль и поперек, но, на мой взгляд, пост лишим не будет.
Предлагаю и у вас для связности добавить нас.
так ты и добавь ;)
Да понятно, надеялся Роман сразу сделал это зеркально.
Это все конечно интересно, но про ресайз картинок вы немного загнули.
Чем вы ресайзите — nearest neighbour что-ли?
Совершенно не убедили в пользе многоходовой комбинации
Не совсем, во Flash bilinear interpolation + пошаговое сжатие. Польза видна именно при создании предпросмотра для огромных изображений. Если этого не делать, то некоторые изображения выглядят как рандомный набор пикселей.
НЛО прилетело и опубликовало эту надпись здесь
Поробуйте, это «дорого».
Интерполяция это не совсем ресайз. Разве нету функции специально для ресайза? (я лично не в курсе, на флеше не писал никогда)

Похоже у вас просто алиасинг проступает. Вот если бы вы сильно заблурили картинку перед интерполяцией — тогда бы одношаговая интерполяция приводила бы к нормальному результату.

PS.
Когда то давно решал похожую задачу с аплоадером на ява-апплетах :-)
Во Flash есть, но путем методов проб и замеров поняли, что этот способ самый быстрый и дает приемлимый результат.
НЛО прилетело и опубликовало эту надпись здесь
Это пример на canvas, но через flash будет тоже самое, если сжимать разом. Сжимать можно и на сервере, но это не отменяет того, что предпросмотр будет «кривой».
С уменьшением всегда были проблемы.
Это на увеличение разработано очень много алгоритмов, потому что текстуры раньше были маленькие.
Вообще никакой интерполяцией нельзя получить нормальное уменьшение — тут надо работать на контурах и контрастах.
Хороший пример — сравним обычный tri-linear и AA.

Да, красиво. Но увы на клиенте этого нету (native) :[
сравним обычный tri-linear и AA

Не AA, а AF (anisotropic filtering)
Исходники библиотеки в несжатом виде, не помешали бы, для удобства просмотра)
Круто! Спасибо!
А не подскажите процент браузеров без поддержки Flash?
И ещё интересен процент без поддержки и FileAPI и Flash :)
Без поддержки Flash, это ещё и AdBlock, на наших проектах ~5%
Скажите пожалуйста, на каких условиях ваши скрипты можно использовать в своих проектах?
BSD
Вы мой вопрос про исходники Флеш-части принципиально игнорируете?
Сорри, не специально. В ближайшие время обязательно добавлю :]
Ок, ждём. :)
Спасибо большое! Для меня эта тема была актуальна. Я использовал флеш для написания контрола, если флеш не поддерживался показывался стандартный контрол, но вот до такого не додумался. Отлично все работает, особенно превью :)
На самом деле это была основная задача и головная боль, как работать с Flash, чтобы не знать о нём :]
Спасибо за статью! :)
А как же про поддержку догрузки и защиту от разрывов связи (отправка частями)?
Изначальной задачей было сохранить текущую функциональность и избавиться от недостатков. Функциональность будет наращиваться и загрузка по частям первая в списке.
Планируется, но там не все однозначно, так как нужна поддержка сервера.
Обновите пожалуйста файл лицензии на Git Hub, по-моему там просто шаблонный текст. Очень хотелось бы использовать в своём проекте, если лицензия подойдет :)
Упс, выше увидел, что BSD. Спасибо :)
Вот за что люблю Хабр, что он подкидывает статьи именно в тот момент, когда они нужны. Спасибо RubaXa.
Лично я частенько уменьшаю, даже в графическом редакторе, в 2 шага: до удвоенного необходимого, потом до нужного.
Автоматически поворачивать картинку на основе EXIF информации есть в планах? У 90% простых людей на этой стадии возникают проблемы.
Конечно, даже сейчас это можно делать через imageTransform на основе FileAPI.getInfo, но дополнительный параметр при upload обязательно будет.
Я имею в виду сразу встроить этот функционал в библиотеку на github, чтобы работало из коробки.
Добавьте проверку на Safari, он «особенный», говорит, что multiple file input поддерживает, а передает что-то неправильно, в результате на сервер приходят файлы с filesize = 0, короче их нет.
Небольшое обсуждение можно найти здесь.
Я для Safari multiple upload на флэше реализую из-за этого
это для Safari на винде, на маке не в курсе
Хм, не знал, но это не важно, для Safari < 5.4 и так Flash. Вся библиотека построена на концепции поддержки нужной технологии в необходимом объеме.

P.S. Проверил в 5.1.7 (windows), размер файла есть.
то есть Вы с флэшем проверили?
хм, забавно
Windows 7 + Safari 5.1.7 там же дает
fileName:calendar_current_date_highlight.jpg name:calendar_current_date_highlight.jpg fileSize:0 lastModifiedDate:Thu Jan 01 1970 04:00:00 GMT+0400 (Ìîñêîâñêîå âðåìÿ (çèìà)) size:0 type:image/jpeg fileName:calendar_in_gmail.png name:calendar_in_gmail.png fileSize:0 lastModifiedDate:Thu Jan 01 1970 04:00:00 GMT+0400 (Ìîñêîâñêîå âðåìÿ (çèìà)) size:0 type:image/png
На mailru.github.com/FileAPI тоже по нулям при нескольких файлах.
Там смысл именно в том, что когда выбираешь 1 файл с аттрибутом multiple, то все работает.
Баг появляется только если несколько файлов выбрать.
Да, придется добавить проверку, но так всё хорошо было, эх…
и не говорите ))
Еще очень рекомендую проверить в режиме флэша, когда сам флэш передает на сервер (этот режим используется в библиотеке?), по HTTPS (только нужен правильный SSL сертификат)
У нас почта работает только по https, этот режим должен быть оттестирован хорошо.
Можно подробнее? Мы тоже мучились с https. Пока решили её ping'ом crossdomain.xml на том домене, куда грузим файл.
я не флэш-программер, поэтому не в курсе, как там что внутри, опишу, как я это понимаю.
В режиме передачи файла по HTTPS флэшем происходит проверка сертификата, то есть флэш «выступает в роли браузера» (так как в нормальной ситуации этим занимается браузер).
У некоторых браузеров была проблема в том, что база сертификатов корявая/ограниченная, то есть они доверяют только проверенным источникам (к примеру, GoDaddy), поэтому если у вас:
1) self-signed сертификат (что вполне вероятно на dev-стадии)
2) нормальный сертификат, но не содержит в себе инфу от подписавшего его источника
то появляются проблемы с тем, что сертификат не принимается браузером.
Флэш ведет себя точно также, то есть тупо отбрасывает такие сертификаты и выдает ошибку IO #2038.
В первом случае тут ничего не поделаешь.
Во втором нужно просто добавить корневой сертификат проверенного источника (который подписал ваш сертификат) внутрь вашего сертификата (это для Nginx) — то есть добавить цепочку сертификатов.
В случае апача добавить параметров SSLCACertificateFile и SSLCertificateChainFile.

По nginx смотреть тут.
У нас так и сделано — это не панацея. Ошибка плавает в зависимости от сочетания: сеть [+ proxy] + браузер + flash player. Именно поэтому, перед тем как переключиться на Flash, пробуем забрать crossdomain.xml, в случае ошибки переходим на iframe.
ну тут все только по собственному опыту, методом тыков и «затыков», я пришел именно к тому, что проблема в недостаточной инфе в сертификате, после рекомендаций со ссылки по nginx, проблема полностью пропала. Насчет проблем сети не знаю, не испытывал, но логично, что выпадет тоже IO error, что логично
1) кстати, если, к примеру, вы уже пропинговали и решили, что можно заюзать флэш, пока пользователь выбирал файл для загрузки, у него отвалилась сеть, он в конце концов выбрал свой файл и флэш пытается отправить его, что произойдет?
2) если решили юзать флэш аналогично первому случаю, пользователь выбрал большой файл и посреди передачи флэшем отвалилась сеть, что будет?
По крайней мере, такая логика в uploadify флэше была в версии 2.10 (вроде), они там использовали флэш из swfupload.
Я недавно как раз обертку писал с учетом поддержки HTML5 некоторыми браузерами и присутствием/отсутствием флэша в системе.
Так что все объяснение только по опыту работы с этим флэшем
Очень изменяюсь, ступил, выбрал только один файл, там и в правду 0. Единственное, что радует, Safari больше не выпускается под Windows.
Извините, что комментарий не совсем в тему. В почте mail.ru, когда нажимаешь «Ответить» на письмо, который ТЫ сам отправил кому-то, в поле «получатель» подставляется ТВОЙ ЖЕ адрес. Как вы считаете, это нормальная функциональность? Мое мнение, я думаю, понятно :)
Вы правы, нелогично. Я, честно говоря, почти всегда жму «Ответить всем» (и тогда, логично, все подставляются).

Исправим.

Правда, остается вопрос — если я нажал «Ответить» на письмо, в котором несколько получателей — кому из них пойдет ответ? Наверное, самое логичное — всем. Правда, тогда получается что в Отправленных кнопка «Ответить» работает так же, как «Ответить всем».
Сделать формочку выбора, кому отвечать, и кнопку ответить всем
Какую еще «формочку выбора»? :) В форме написания письма и так есть поле «кому отвечать». И кнопка «ответить всем», конечно, тоже есть.
Позвольте совсем идиотский вопрос. А нельзя было совсем без флеша? Через multipart всегда можно загрузить. Неужели так нужен ресайз на клиенте, чтобы поддерживать флеш-компонент?
Думаю, для таких больших порталов, как mail.ru, каждый такт важен.
Конечно можно, Flash работает только в том случае, если нет поддержки File API в нужно объеме. Всё зависит от доли IE < 10, да и размеров проекта.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий