• web crap HTML5 Веб — говно. Последние несколько дней я мучался при написании html5 ajax загрузчика с драг энд дроп с возможностью заливать файлы до 2GB. Таковы требования проекта. И что ви таки думаити? Оно даже работает, но через раз. При мистических обстоятельствах метод xhr.send() отказывается слать файл, который минут назад чудесно заливался, будть до файл размером 1GB или 100M. В 99% случаях успешно заливаются только картинки, так как они мало весят. Вы мне сейчас наверное скажете, что в гугл доксах и контактике все работает, я вам отвечу что вы ошибаетесь.

Replies (16)

  • @grouzen, Там такая же проблема. Залив пару файлов размером > 100M следующий вы уже не зальете. Я полагаю что это зависит от размера памяти на клиентской машине. Вообщем можете проверить сами. Я просто высказал свое недоумевание по поводу того, что не существует нормальных путей лить файлы асинхронно в 21 веке с поддержкой драг&дропа.
  • @grouzen, Угу, сталкивались. Впрочем, флеш немногим лучше.
  • @Alinaki, флеш работает, да, но разве там есть drag&drop?
  • @Alinaki, Впрочем требования проекта — html5 only. Хотя мы даже пошли на отчаянные меры и убедили их использовать флеш, однако в том же SWFUpload нельзя прикрутить drag&drop, как скорее всего и ни в каком другом флешевом приложении.
  • @grouzen, как-то очень странно — у всех работает, а у тебя нет. можешь потестить на github.com — если там точно так же рендомно падает, то может у тебя с железом чо?
  • @Mark, тестил не я один
  • @grouzen, ну таки весь интернет загрузкой через драг-н-дроп пользуется на ура, а у тебя одного не работает. это же как-то эмм… странно, да?
  • @Mark, ты потесть как я описал в посте на примере гуглодоксов и контактика
  • @grouzen, если я буду заливать файлы по сотне метров по своему вайфаю, то у меня все отвалится по банальной причине отваливания вайфая
  • @Mark, ну пусть кто нибудь другой попробует. С железом у меня все нормально, тестировал на двух домашних машинах. Могу впринципе на ноутбуке еще протестировать, но лень. Так же тестировал шеф — результат у него тот же
  • @grouzen, интересно. наверное можно поставить хук на malloc() и посмотреть, что творится внутри браузера с памятью при отправке таких файлов. ну или по занятой процессом памяти мониторить.

    грузить весь файл в память перед отправкой — это какой-то тупой подход.
  • @Mark, тупой, да. Почему так сделано я не знаю.
  • @grouzen, а как у тебя сделана собственно заливка? я в гугле вижу примеры, которые выковыривают из drag евента список файлов, потом через filereader читают весь файл в data url, а потом только отправляют. у тебя так?
  • @Mark, у меня через FormData. Через FileReader есть смысл читать когда ты юзаешь BlobBuilder. У меня сделано так, что если не поддерживается FormData, то юзается второй вариант с FileReader и BlobBuilder. Собственно код я утянул из вконтакта целиком.
  • @grouzen, вот пример chunked upload через блоббилдер: stackoverflow.com
  • @Mark, да, я в курсе про chunked upload, но проблема в том, что api BlobBuilder'а поддерживается сейчас вроде только в хроме и возможно в вебките