Yii:如何使Dropzone扩展工作?

时间:2015-09-25 23:45:28

标签: php yii upload widget dropzone.js

我正在尝试将Dropzone Extension添加到我在Yii中的应用程序,它允许异步文件上传。 http://www.yiiframework.com/extension/yii-dropzone/

我做的第一件事就是将名为“dropzone”的下载文件夹放入我的扩展文件夹“C:\ xampp \ htdocs \ site \ protected \ extensions”。

这是我在控制器中操作的代码(MainController.php)

public function actionUpload()
{
    $test = rand(100000, 999999); //TEST
    var_dump($test);

    $model = new UploadFile;
    
    if(isset($_FILES['images'])){
        
        $model->images = CUploadedFile::getInstancesByName('images');
        
        $path = Yii::getPathOfAlias('webroot').'/uploads/';
        
        //Save the images
        foreach($model->images as $image)
        {
            $image->saveAs($path);
        }                    
    }
    
    $this->render('upload', array('model' => $model));
}

视图(upload.php)

<?php
$this->widget('ext.dropzone.EDropzone', array(
    'model' => $model,
    'attribute' => 'images',
    'url' => $this->createUrl('file/upload'),
    'mimeTypes' => array('image/jpeg', 'image/png'),
    'options' => array(),
));
?>

和模型(UploadFile.php)

<?php

class UploadFile extends CFormModel
{
    public $images;
    
    public function rules(){
        return array
        (
            array(
                "images",
                'file',
                'types' => 'jpg,gif,png',
            ),
        );
    }
}

当我运行它时,我可以看到Dropzone界面,我可以添加拖动它们的图像或从文件浏览器中选择它们。 它们显示各自的进度条和成功标记,但上传目录中没有任何内容,并且IDE(Netbeans)和Chrome控制台中都不会显示任何错误。

我做了一些打印测试,我意识到'actionUpload'中的代码只在第一次执行时(当它绘制视图时),但是当它从dropzone小部件调用时它什么都不做。

如果您有解决方案,我真的很感激。如果有人能给我一个这个扩展的简单实例,我会很高兴。感谢。

1 个答案:

答案 0 :(得分:1)

据我了解,dropzone逐个上传文件,而不是一起上传。所以$model->images只保存一个图像对象。并且foreach循环失败。