Попытка найти решение для загрузки файлов AJAX для Zend Framework с использованием jQuery
Я пытаюсь создать форму "Загрузить файл и электронное письмо как вложение", где файл начинает загружаться после того, как он был выбран (например, Gmail), перед отправкой электронного письма. Я также хотел бы реализовать индикатор выполнения, чтобы показать статус загрузки.
Там должно быть много всяких примеров, но я просто не могу их найти!
Знаете ли вы какие-либо примеры или учебные пособия, плагины, помощники, или вы сделали это сами и хотели бы поделиться некоторыми примерами кода?
Спасибо!
7 ответов
Посмотри на
- Uploadify
- Использование Uploadify с Zend Framework
- Как интегрировать uploadify в Zend Framework 1.9.6
Существует также пример интеграции fancyupload с Zend Framework: хотя fancyupload основан на mootools, вы можете узнать из объяснения.
Примечание: в качестве загружаемого файла uploadify использует flash. Тем не менее, он ухудшается, когда вспышка недоступна.
Попробуйте использовать плагин формы jQuery, который поддерживает загрузку ajax, примеры можно найти по предоставленной ссылке. В Zend Framework есть помощник jQuery.
Как кто-то еще предложил, 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]
Остановите эту глупую войну голосов против. Мы здесь не для того, чтобы завоевать глупую репутацию, но чтобы помогать друг другу в навыках программирования, верно?
Я не опроверг всех, кто предложил флэш-решение, просто ответ Эндрю был очень любезен и не был полезным анализом проблемы.
Дело не в том, что я не люблю flash, но эта вспышка хороша (незаменима) для других проблем (видео, музыка и т. Д.), Но НЕ является надежным решением для загрузки файлов, вещи, которые можно легко сделать с помощью Javascript. и сам php (с помощью APC, если вы не можете использовать APC на своем сервере, перейдите к "flash-решению").
Что касается объекта swf, вам просто нужно надеяться, что 'api' для его обработки выполнит все, что вам нужно, иначе.. они дают вам исходный файл (.fla)? у вас есть лицензия Adobe Flash и знания для ее редактирования? Готовы ли вы делать так каждый раз, когда ваша модная загрузка требует даже более простой модификации? Вы согласны со мной, что найти помощь для js или php проще, чем найти помощь для flash?
Вот почему мне не нравится флэш-решение для такого рода проблем.
Тогда, не стесняйтесь держать меня в обиде, я здесь, чтобы научиться не набирать глупых повторений.
[/ OT]
Я предлагаю вам uploadify.com с помощью jquery. Пример есть на сайте. Вы можете использовать этот плагин jquery и сохранить файл в БД (возможно, временную таблицу). Когда пользователь отправит электронное письмо, вы получите файлы, прикрепите его и удалите из базы данных.
PS: если у вас есть проблемы с сессиями, возьмите: zend framework
SWFUpload выглядит многообещающе:
Плюсы:
- Загрузите несколько файлов одновременно, нажав Ctrl/ Shift в диалоговом окне.
- Javascript обратные вызовы на все события
- Получить информацию о файле до начала загрузки
- Стилизуйте загружаемые элементы с помощью XHTML и CSS
- Отображение информации во время загрузки файлов с использованием HTML
- Нет необходимости перезагрузки страницы
- Работает на всех платформах / браузерах с поддержкой Flash.
- Изящно понижается до обычной формы загрузки HTML, если Flash или javascript недоступны
- Контроль размера файла перед началом загрузки
- Отображать только выбранные типы файлов в диалоге
- Очередь загрузки, удаление / добавление файлов перед началом загрузки
Есть даже плагин SWFUpload jQuery, чтобы сделать работу с SWFUpload еще проще, и учебник о том, как использовать плагин SWFUpload jQuery для многократной загрузки файлов с индикатором выполнения.
Минусы:
Требуется Flash. знак равно
Также, согласно этому сообщению в блоге:
Одна проблема, с которой многие сталкиваются при использовании SWFUpload с Zend Framewok, заключается в том, что сессии часто теряются в процессе загрузки.
Но автор предлагает решение для потерянных сессий при использовании SWFUpload и Zend Framework. Вот также решение по переполнению стека для потерянных сеансов при использовании SWFUpload и Zend Framework.
Просто очень важное замечание - при использовании загрузчиков Flash тип файла MIME не будет передаваться на сервер, и все файлы будут иметь вид application/octet-stream - это означает, что вам нужно использовать другие методы, чтобы найти реальный тип... возможно, EXE-файл был загружен!
Вы смотрели на http://digitarald.de/project/fancyupload/? Кажется, чтобы удовлетворить ваши требования.