Реализация Uploadify с Zend Framework - PullRequest
3 голосов
/ 01 октября 2010

Хорошо,

Я прочитал и перепробовал много вещей о том, как реализовать загрузку с помощью Zend Framework, и я, вероятно, что-то упускаю, но я полностью застрял. Кажется, мое действие не называется.

Все загружаемые файлы помещаются в один каталог в общей папке.

Кнопка загрузки вызывается в экземпляре fancybox и загружается из скрытого div на той же странице (admin / images / index) через встроенную концепцию Fancybox.

Все jquery работает отлично, загрузка работает отлично, и каждый файл завершен. Но файлы не удаляются в папку. При тестировании с помощью скрипта uploadify.php все работает нормально.

В консоли нет ошибок.

Проверено на локальном хосте Протестировано с Chrome 6.0.4 и Firefox 6.3.6 Протестировано с uploadify 2.1

Это мой код инициализации jquery: (я использую загрузчик для использования скриптов jquery)

Removed to keep post readable

Я использовал разные вещи для вызова файла, но ни одна из них не работала:

   Removed to keep post readable

Это код моего администратора / images / upload

    Removed to keep post readable

Этот код используется в моей загрузочной системе для решения проблемы с cookie:

    Removed to keep post readable

Кто-нибудь знает? Я полностью потерян ....

========================================== РЕДАКТИРОВАТЬ ======= =================================

Проблема все еще в том, что я не могу достичь действия контроллера. Я изменил некоторые вещи для облегчения тестирования. Текущий код выглядит следующим образом: case 'jpg': $ validExtension = true; перерыв; case 'jpeg': $ validExtension = true; перерыв; case 'gif': $ validExtension = true; перерыв; case 'png': $ validExtension = true; перерыв; Я не понимаю, почему действие не называется ..

Другое редактирование:

Текущие сценарии:

чехол 'jpg': $ validExtension = true; перерыв; case 'jpeg': $ validExtension = true; перерыв; case 'gif': $ validExtension = true; перерыв; case 'png': $ validExtension = true; перерыв;

Создание ресурсов загрузки возвращает ошибку HTTP с помощью uploadify.js

Я попробовал несколько сессионных решений, найденных на форуме uploadify и не только, но это не имело никакого значения ...

Другое редактирование

Я работал дальше и добавляю ресурс для загрузки

$ this-> acl-> add (new Zend_Acl_Resource ('upload'));

дал мне вывод html из сценария не вошедшего в систему / без роли, указывающий на известную проблему сеанса. Я собираюсь попробовать несколько решений и вернусь, если сценарии будут работать.

Ответы [ 3 ]

3 голосов
/ 14 октября 2010

Я исправил все это. Я обнаружил, что загрузка должна быть добавлена ​​в качестве ресурса. Проблема с флэш-сессией была исправлена ​​с помощью плагина, который можно найти здесь

Примечание. На данный момент тестируется только на localhost

Вот как выглядят сценарии:

index.phtml

<script type="text/javascript">// <![CDATA[
$(document).ready(function() {
    $('#uploaderImages').uploadify({
        'uploader'      : '../../uploadify/uploadify.swf',
        'script'        : '<?php echo $this->baseUrl().'/admin/images/upload'; ?>',
        'cancelImg'     : '../../uploadify/cancel.png',
        'scriptAccess'  : 'always',
        'queueID'       : 'fileQueue',
        'folder'        : '../../uploads/images/original/',
        'multi'         : true,
        'auto'          : true,
    });
});
// ]]></script>

Контроллер изображения:

public function uploadAction()
    {
        $tempFile = $_FILES['Filedata']['tmp_name'];
        $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
        $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
        move_uploaded_file($tempFile,$targetFile);
    }

И добавьте ресурс в свой ACL:

$this->acl->add(new Zend_Acl_Resource('upload'));

Если у меня возникнут другие проблемы или возникнет кто-то другой, сообщите мне об этом, и я обновлю этот вопрос / ответ необходимой дополнительной информацией.

Протестировано в Firefox 3.6 и Chrome 6.0

Редактировать

Приведенное выше решение работает на реальном сервере, но только на Windows. Во всех браузерах с Mac данные не публикуются. Я нашел исправление, как написано здесь: http://slavi.biz/blog/using-uploadify-with-zend-framework-2009-08-30.html, чтобы нормально работать как на Windows, так и Mac.

0 голосов
/ 10 октября 2010

Я не вижу, где вы отключаете средство визуализации.Может быть, в этом проблема.

Если у вас уже есть представление с именем upload или index (основанное на ваших изменениях), есть ли у вас макет?Для загрузки требуется только строка.

Итак, вам нужно добавить следующие строки в ваше действие:

$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);

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

Кроме того, зайдите на страницу через браузер и скажите нам, если она работает без ошибок (изображения / индекс или загрузка)

Наконец, я также рекомендую вам использовать firebug ипроанализировать запрос.

0 голосов
/ 09 октября 2010

Из того, что я обнаружил, у меня возникли некоторые похожие проблемы, поскольку файлы swf и upload.php не были в одном каталоге, а права доступа к каталогу были отключены.

...