Ответы пользователя по тегу Gmail
  • Загрузка файлов на сервер как на Gmail?

    barmaley_exe
    @barmaley_exe
    Если не трогать всякие флешы и серверные компоненты, то можно сделать на основе функционала, предлагаемого HTML5. Проблема лишь в том, что вводится он медленно и поддерживается браузерами фигово:

    1. Хром: начиная с 5-ой (?) версии добавили FormData (из XHR2). Теперь можно отсылать файлы (несмотря на то, что прочитать бинарное содержимое файла пока нельзя, во всяком случае в стабильных релизах) XHR'ом (а там, напомню, нужен multipart). В ранних версиях приходилось отправлять сырое бинарное содержимое файла, без каких-либо заголовков. Соответственно, веб-серверы не понимали, что им пришел файл, и вообще никак не обрабатывали присланную информацию (ее приходилось читать из входного потока). Есть поддержка XMLHttpRequestUpload, который позволяет мониторить прогресс загрузки.

    2. Firefox: начиная с 3.5 (?) можно читать содержимое файлов, есть специальный метод для отправки двоичных данных. Так что отсутствие FormData ничем плохим не сказывается — multipart запрос можно сформировать самому. XMLHttpRequestUpload так же поддерживается.

    3. Сафари: точка сказать не могу, но File, FormData, XMLHttpRequestUpload там реализованы (5.0 — 7533.16).

    4. Опера, ИЕ: видимо, даже не слышали о таких. Для них придется делать по-старинке — флеш / серверсайд / etc.

    Из разряда почитать:
    javascript.ru/blog/Brmaley.ee/FileAPI — материал несколько устарел*
    www.thecssninja.com/javascript/gmail-upload — материал несколько устарел*
    code.google.com/p/html5uploader/ — библиотечка для D&D, но, на мой взгляд, она тоже несколько устарела* :)
    * — имеется в виду поддержка такой штуки как FormData.
    Ответ написан
    Комментировать