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

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

Последний Safari уже умеет FileReader
Спасибо, надо перепроверить! Но все таки лучше проверять поддержку и Form Data, и File Reader, так как пользователь может зайти с любого сферического в вакууме браузера.
Хорошая статья, и как раз вовремя. Спасибо!
Что за пилюля для Хрома? Я надеюсь при загрузки он не прогоняет весь файл через эту функцию на Javascript-е?
и не надейтесь. по коду получается, что как раз все данные прогоняет.
хотя и без этого формирование пост-запроса вручную и передача данных файла путём строковой конкатенации говорят о том, что для больших файлов такой способ юзать нельзя. прямо так и вижу, как в body += reader.result + "\r\n"; приходит хотя бы метров 100 данных =)
По сути, это аналогия multipart/form-data, как если бы мы отправляли данные через форму. Из-за того, что Chrome не учитывает заголовок и не кодирует файлы перед отправкой на сервер, мы приводим в соответствие бинарные и ASCII символы. Для отправки файлов я советую FormData, как более надежный метод.
Подскажите, а папки с файлами, и чтоб несколько за раз, научились браузеры аплоадить?
Конечно, в данной реализации вы можете перетащить в принимающий слой несколько файлов и скрипт все их обработает.
Спасибо. Буду вникать в эту тему.
Папки со структурой пока никак. Google Drive для этого, кажется, использует флеш.
А какие либо наработки на этой технологии вам известны?
Отлично, это полезная фича!
Чудесно!
Присоединяюсь. Демка была бы кстати.
Зайдите во Вконтакте, прикрепите файл к сообщению. Вот вам и демка (флеш у меня отключен, на всякий случай скажу).
Специальной демки нет, но можно посмотреть здесь www.15web.ru/feedback
А почему вы вот так не программируете? Неудобно? Кажется нечитаемым? Непривычно?
xhr[xhr.sendAsBinary ? 'sendAsBinary' : 'send'](body);
Удобно, привычно. Но код является учебным, да и комментировать удобнее. Естественно для практического применения он должен быть оптимизирован.
По-моему, гораздо хуже читается. Но компактно, это плюс.
Это вопрос владения языком, скорее всего. Я бы, на самом деле, написал лучше так:
(xhr.sendAsBinary ? xhr.sendAsBinary : xhr.send)(body);
Согласна, из трех я бы тоже выбрала именно этот вариант.
Тогда уж
(xhr.sendAsBinary || xhr.send)(body);
> С остальными, более прогрессивными браузерами, а это всего лишь Chrome, Firefox, Opera и Safari, тоже не все так гладко. Они конечно стараются быть «вперде»
Хорошее слово.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории