Попытка найти решение для загрузки файлов AJAX для Zend Framework с помощью jQuery

Я пытаюсь создать форму «загрузить файл и отправить электронное письмо в качестве вложения», где файл начинает загружаться после того, как он был выбран (например, Gmail), перед отправкой электронного письма. Я также хотел бы реализовать индикатор выполнения, чтобы отображать статус загрузки.

Там должны быть всевозможные примеры, но я просто не могу их найти!

Знаете ли вы какие-либо примеры или учебные пособия, плагины, помощники или вы делали это самостоятельно и хотели бы поделиться некоторыми примерами кода?

Спасибо!


person Andrew    schedule 13.04.2009    source источник
comment
Для справки в будущем, и другие люди, попавшие сюда из Google (как и я). Взгляните на эту ссылку.   -  person sha1    schedule 04.12.2012


Ответы (7)


Посмотри на

Также есть пример интеграции fancyupload с Zend Framework.: хотя fancyupload основан на mootools, вы можете узнать из объяснений.

Примечание: как fancyupload, uploadify использует flash. Однако он ухудшается, когда вспышка недоступна.

person Gregory Pakosz    schedule 14.12.2009
comment
он использует объект swf, он же flash! - person Strae; 14.12.2009
comment
ну и что?, ты застрял на пентиуме 4 со скрежетом? ;) - person Gregory Pakosz; 14.12.2009
comment
в любом случае, тот факт, что вам не нравится вспышка, является субъективным и не означает, что ответ неверный. - person Gregory Pakosz; 14.12.2009
comment
Я никогда не говорил, что ответ неправильный, но здесь он спрашивает, как это сделать с помощью jquery, а не flash. В любом случае, это не значит, что я не люблю вспышку, а просто то, что использование вспышки для такого рода проблем редко бывает хорошим решением, и НИКОГДА не является надежным решением. - person Strae; 15.12.2009
comment
обновил свой ответ, взгляните, почему я не предлагаю flash для загрузки файла - person Strae; 15.12.2009
comment
Вы понимаете, что GMail использует Flash для загрузки, не так ли? В основном все модные загрузки файлов используют Flash. - person Kitson; 15.12.2009
comment
gmail не использует flash по умолчанию, и, тем не менее, я полагаю, что у команды gmail должен быть кто-то (или вроде как больше, чем один), кто может создать свой собственный объект swf, чтобы редактировать его, обновлять и изменять его в мало времени. Во всяком случае, речь идет о ajax и jquery, а не о flash;) - person Strae; 15.12.2009
comment
Во-первых, Gmail использует Flash, другого способа открыть окно, как только вы нажмете «прикрепить файл», не существует. Вы должны нажать кнопку «Обзор» в HTML-версии в целях безопасности. Я бы не согласился. Я считаю, что флэш-загрузчик такой же надежный, как и любой другой. Кроме того, с точки зрения разработчика, это позволяет вам сосредоточиться на использовании вложения и решении того, как его загрузить. Кроме того, то, что он никогда не упоминал вспышку в своем вопросе, не означает, что он не хочет использовать вспышку: даже в его собственном ответе используется вспышка. Вы считали, что он не знал о параметрах Flash + jQuery, когда задавал вопрос? - person Alec Gorge; 16.12.2009
comment
И да, я видел, что он сказал, что предпочел бы не использовать flash, но для эмуляции Gmail ему придется. - person Alec Gorge; 16.12.2009
comment
Что ж, на мой взгляд, есть проблемы, которые требуют flash, другие, которые могут быть выполнены во flash, и другие, где flash - худшая ставка ... загрузка - это случай 2 °; Я предпочитаю обрабатывать их в js и php по многим причинам, но это мое мнение ... я не сказал, что флэш-память плохая или неправильная для этой проблемы, но просто я не буду использовать ее для загрузки, которую можно легко и эффективно сделать с другими (которые я считаю более гибкими, но это еще один мой имхо) языками. - person Strae; 16.12.2009
comment
@Gregory Pakosz ссылки мертвы. - person ryy; 19.10.2012

Попробуйте использовать плагин формы jQuery, который поддерживает загрузку ajax, примеры можно найти на предоставленная ссылка. Zend Framework имеет помощник jQuery.

person karim79    schedule 13.04.2009
comment
на самом деле, это похоже на хороший плагин. Есть ли где-нибудь хороший учебник, который показывает, как это сделать при выборе файла (вместо отправки формы)? - person Andrew; 14.12.2009

Как предположил кто-то другой, у JQuery есть нужный вам плагин.

Простой iframe поможет, и вам понадобится APC для индикатор.

Это «тщательно проверенное» решение, например cms Drupal использует его (не знаю, с jquery, но я уверен насчет iframe и APC).

Некоторый учебник:

Создание панели выполнения загрузки в PHP с помощью APC

Создание индикатора выполнения загрузки в PHP с помощью APC : js / часть Ajax на странице 4

Загрузить с индикатором выполнения для APC + jQuery (итальянский язык)

Индикатор выполнения загрузки с помощью PHP5, APC и jQuery

HOWTO: ход загрузки PHP и jQuery бар

Асинхронная загрузка файла с индикатором выполнения AJAX в PHP < / а>

Zend Framework: документация (глава 21.1. 5. Ход загрузки файлов)

ИЗМЕНИТЬ:

Я не буду публиковать код, потому что он бесполезен; просто следуйте одному из опубликованных мной руководств (например, первого), и вы найдете весь код, который вам нужен, с полным объяснением того, что делает код (это более важно, чем сам код, imho).

[OT]

Остановите эту глупую войну голосов за / против. Мы здесь не для того, чтобы завоевать дурацкую репутацию, а чтобы помочь друг другу в программировании, верно?

Я не проголосовал против всех, кто предложил флэш-решение, просто ответ Эндрю был некорректным и бесполезным анализом "проблемы" swf.

Дело не в том, что я не люблю вспышку, а в том, что эта вспышка хороша (незаменима) для решения других проблем (видео, музыка и т. Д.), Но НЕ надежная решение для обработки загрузки файлов, то, что может быть легко выполнено с помощью Javascript и самого php (с APC, если вы не можете использовать APC на своем сервере, используйте «флэш-решение»).

С объектом swf вам просто нужно надеяться, что api для его обработки выполнит все, что вам нужно, иначе ... они предоставят вам исходный файл (.fla)? у вас есть лицензия Adobe Flash и знания для ее редактирования? Готовы ли вы делать это каждый раз, когда для вашей фантазии требуется даже более простая модификация? Вы согласны со мной, что найти помощь по js или php проще, чем по flash?

Вот почему мне не нравится флэш-решение для такого рода проблем.

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

[/OT]

person Strae    schedule 14.12.2009

Я предлагаю вам uploadify.com с помощью jquery. Пример есть на сайте. Вы можете использовать этот плагин jquery и сохранить файл в БД (возможно, временную таблицу). Когда пользователь отправит электронное письмо, вы получите файлы, прикрепите их и удалите из базы данных.

PS: если у вас есть проблемы с сеансами, возьмите это: потерянный сеанс zend framework

person denadai2    schedule 10.12.2009
comment
он использует объект swf, он же flash! - person Strae; 14.12.2009

Вы смотрели http://digitarald.de/project/fancyupload/? Кажется, удовлетворяет вашим требованиям.

person Mayuresh    schedule 14.12.2009

SWFUpload выглядит многообещающим:

Плюсы:

  • Загрузите несколько файлов одновременно, нажав Ctrl / Shift в диалоговом окне
  • Обратные вызовы Javascript для всех событий
  • Получите информацию о файле перед началом загрузки
  • Стилизация элементов загрузки с помощью XHTML и css
  • Отображение информации во время загрузки файлов с помощью HTML
  • Не требует перезагрузки страницы
  • Работает на всех платформах / браузерах, поддерживающих Flash.
  • Преобразуется постепенно в обычную форму загрузки HTML, если Flash или javascript недоступны
  • Контрольный размер файла перед началом загрузки
  • Отображать только выбранные типы файлов в диалоговом окне
  • Очередь загрузок, удаление / добавление файлов перед началом загрузки

Есть даже SWFUpload jQuery Plugin, чтобы заставить работать с SWFUpload еще проще, а также руководство по Как используйте подключаемый модуль SWFUpload jQuery для загрузки нескольких файлов с индикатором выполнения

Минусы:

Требуется Flash. знак равно

Кроме того, согласно этому сообщению в блоге:

Одна проблема, с которой сталкиваются многие люди при использовании SWFUpload с Zend Framewok, заключается в том, что сеансы часто теряются в процессе загрузки.

Но автор предлагает решение потерянных сеансов при использовании SWFUpload и Zend Framework. Здесь также есть решение для потерянных сеансов при использовании SWFUpload и Zend Framework.

person Andrew    schedule 14.12.2009
comment
Зачем использовать flash, если достаточно простого iframe + 10 строк js? - person Strae; 14.12.2009
comment
Как у вас может быть раздел против минусов, в котором не упоминается, что для этого требуется Flash ?! Никто не хочет использовать Flash! Это также связано с угрозами безопасности. - person Josh Stodola; 14.12.2009
comment
Я абсолютно согласен. Я не хочу использовать вспышку. Я бы предпочел использовать чистый javascript. Я разместил это только как предложение. Но я не думаю, что это заслуживает голоса против. - person Andrew; 15.12.2009
comment
Раздел минусов, вероятно, должен состоять из заголовка, который гласит <fail>Requires Flash</fail> - person Josh Stodola; 15.12.2009

Просто очень важное замечание - при использовании загрузчиков Flash тип файла mime не будет передаваться на сервер, и все файлы будут приложениями / октетами-потоками - это означает, что вам нужно использовать другие методы, чтобы найти настоящий тип ... возможно, Файл exe загружен!

person Christof Coetzee    schedule 28.11.2010