PHP Image / Fileupload: кроссбраузер, несколько файлов, перетаскивание? - PullRequest
4 голосов
/ 13 марта 2012

Живя в 2012 году, я не думал, что загрузка изображений с использованием PHP вызовет столько трудностей.

Мои требования:

  • загрузка нескольких файлов
  • кросс-браузерный функционал
  • с учетом вопросов безопасности
  • в зависимости от наименее возможных дополнений или расширений
  • с поддержкой drag & drop (было бы неплохо, по крайней мере)

Доступные варианты мне кажутся:

  1. простая загрузка одного файла (или несколько вводов одного файла, но вам все равно придется выбирать каждое изображение вручную) с использованием только PHP (и, например, библиотеки GD)

    (+) Плюсы: полностью кросс-браузерный функционал, не зависящий ни от flash, ни от javascript, ни от html5, ни от каких-либо дополнений и т. Д., Максимум настраиваемости

    (-) Минусы: плохой пользовательский интерфейс, так как нет поддержки нескольких файлов, нет перетаскивания и т. Д.

  2. компромисс, используя, например, JQuery

    как показано на многих постах и ​​других сайтах, по этой ссылке, например: http://blueimp.github.com/jQuery-File-Upload/

    (+) Плюсы: поддержка нескольких загрузок файлов и даже перетаскивание, помимо других приятных функций, в основном только для FireFox, Chrome, Safari (подробности см. По ссылке)

    (-) Минусы: только один выбор файлов и отсутствие перетаскивания для IE (проверено на IE6-IE8 самостоятельно)

  3. HTML5: доли рынка браузеров, похоже, не позволяют зависеть только от HTML5, все же ...

  4. Flash: я нашел много разных загрузчиков, основанных на flash, но при тестировании многие не выполняли то, что заявили (например, выбор нескольких файлов и кросс-браузерную функциональность). Два примера, которые я нашел полезными:

    http://www.uploadify.com/demos/ http://code.google.com/p/swfupload/ (см. http://demo.swfupload.org/v220/ для демонстраций)

    (+) Плюсы: упомянутые выше поддерживают несколько загрузок файлов

    (-) Минусы: нет перетаскивания, в зависимости от добавления Flash, и я не эксперт по безопасности и не очень знаком с flash, но документация по swfupload, например, заявляет, что не может / не проверяет MIME-тип загрузок и полностью полагается на проверку расширения файла)

Однако я нашел утверждения, например, Google Docs использует загрузку нескольких файлов не на основе Flash, но все еще работает в IE. Кто-нибудь знает, как они это делают?

Другие мои вопросы были: я наблюдал за возможностью? Это все лучшие варианты? Есть ли какой-нибудь способ, не связанный с флэш-памятью, для загрузки как минимум нескольких файлов, работающих в IE (как минимум v8)? Как вы, ребята, делаете это? Или он действительно ждет и надеется на прорыв HTML5 и теперь имеет 5 различных загрузчиков, каждый из которых оптимизирован для специального браузера / добавления доступности?

Заранее большое спасибо!

1 Ответ

2 голосов
/ 13 марта 2012

Похоже, вы провели довольно тщательное исследование.Я обнаружил подобную загадку несколько недель назад.Что касается ссылки на Документы Google, мне бы очень хотелось это увидеть, потому что я никогда не находил ничего подобного.Лично, если вы имеете дело с более молодой аудиторией вашего сайта, я бы порекомендовал использовать опцию jQuery и отображать рекомендации браузера Firefox или Chrome для пользователей IE.Go Flash для старшей толпы, которая, скорее всего, будет на IE.

К сожалению, на самом деле здесь нет победителя, которого я нашел.Но, по крайней мере, с опцией jQuery вы избегаете Flash и имеете потенциал, что IE будет работать с ним в будущих версиях.С HTML5 Flash быстро исчезает (и хорошее избавление).Теперь, если это произойдет только с IE.Я имею в виду, давай, как получается, что даже в IE9 они даже не приближаются к своим конкурентам из-за жалоб на стандарты ???Это просто смешно.

...