Попытка найти решение для загрузки файлов AJAX для Zend Framework с использованием jQuery - PullRequest
7 голосов
/ 13 апреля 2009

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

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

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

Спасибо!

Ответы [ 7 ]

7 голосов
/ 14 декабря 2009

Посмотрите на

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

Примечание. В качестве загружаемого файла для загрузки используется flash. Тем не менее, он ухудшается, когда вспышка недоступна.

4 голосов
/ 13 апреля 2009

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

3 голосов
/ 14 декабря 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. Ход загрузки файлов)

EDIT

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

[OT]

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

Я не понизил мнение всех, кто предложил флэш-решение, просто ответ Андрея Бекоса был любезно некорректен и бесполезный анализ SWF-проблемы.

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

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

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

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

[/ OT]

2 голосов
/ 10 декабря 2009

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

PS: если у вас есть проблемы с сессиями, примите следующее: Zend Framework, проигрышная сессия

0 голосов
/ 28 ноября 2010

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

0 голосов
/ 14 декабря 2009

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

Плюсы:

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

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

Минусы:

Требуется Flash. = /

Также, согласно этому сообщению в блоге :

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

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

0 голосов
/ 14 декабря 2009

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

...