上传执行动作两次

时间:2013-02-11 11:07:45

标签: cakephp uploadify cakephp-2.1

我在CakePHP中使用了jquery uploadify,我遇到了$ _SESSION的问题,因为我在下面的操作中通过$ this->获得了用户ID。请求 - > params ['named'] ['uid']问题在于uploadify启用操作执行两次,但第二个数据$ this->请求 - > params ['named'] ['uid']丢失了。

以下是简化的代码,以便更好地理解。

FilesController.php / index **运行两次

public function index() {
        $id = $this->request->params['named']['uid'];
        $us = $this->User->findById($id)['User'];
        $dir = UPLOAD_DIR . $us['id'] . '/';
        CakeSession::write('Files.atual', $dir);
        $this->set('u', $us);
        //$this->autoRender = false;
}

观看/元素/ up.ctp //启用上传

<?php $timestamp = time(); ?>
    $(function() {
        $('#file_upload').uploadify({
            'formData'     : {
                'timestamp' : '<?php echo $timestamp; ?>',
                'token'     : '<?php echo md5('unique_salt' . $timestamp); ?>'
            },
            'swf'      : '<?= $this->request->webroot; ?>uploadify.swf',
            'preventCaching' : false,
            'uploader' : '<?= $this->request->webroot; ?>uploadify.php?session_id=<?php echo(session_id()); ?>',
            'buttonClass' : 'button icon-paperclip',
            'buttonText' : 'Enviar Arquivos',
            'onUploadSuccess' : function(file, data, response) {
                $('.files-icons').load('<?= $this->request->webroot; ?>files/reload/<?= $u['id'] ?>');
            }
        });
    });

1 个答案:

答案 0 :(得分:0)

对您的上传操作的双重请求是由uploadify的button_background_url属性中的错误引起的。您可以设置自己的背景图像,通过在.uploadify配置中设置此操作来停止对您的操作发出的其他请求:

'button_image_url': '/img/cake.icon.png',

仅作为一个例子。您可能希望将其设置为null或其他一些背景图像。