【发布时间】:2015-09-25 23:45:27
【问题描述】:
我正在尝试将 Dropzone 扩展添加到我在 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 小部件调用时它什么也不做。
如果您对此有解决方案,我将不胜感激。如果有人能给我一个这个扩展的简单工作示例,我会很高兴。谢谢。
【问题讨论】:
-
您正在浏览模型 ($model->images) 的当前图像集,这将是第一次(并且总是)为空的,因为您从未为它设置任何值。而是通过 $_FILES['images']
-
你说得对,我错过了。我已经编辑了控制器。无论如何它还没有工作,我还尝试打印一个测试随机数,正如您现在在代码中看到的那样。它只被打印了 1 次(当视图被渲染时)。所以我认为问题出在没有调用操作的小部件上。
标签: php yii upload widget dropzone.js