使用Ajax的CMultifileUpload

时间:2013-09-25 23:09:16

标签: ajax yii

问题是,当我使用ajax调用此操作时,我无法在控制器/操作中获取CMultifileUpload实例

这是我的代码 在我看来

<?php $form=$this->beginWidget('CActiveForm', array('id' => 'form',
    'enableAjaxValidation' => false, 'htmlOptions' => array('enctype' => 'multipart/form-data'),)); ?>

    <div class="row">
    <?php
        $this -> widget('CMultiFileUpload', array('name' => 'wupload', 'accept' => 'zip', \
        'duplicate' => 'Duplicate file!', // useful, i think
        'denied' => 'Invalid file type', // useful, i think
        'max' => 1
        ));

        echo CHtml::button('upload', array('onclick'=>'send()',));
        ?>
    </div>

<?php $this->endWidget(); ?>

这是我在我的控制器中的动作

public function actionUpload(){
    $file = CUploadedFile::getInstancesByName('wupload');
    var_dump($file);
}

这是我的脚本功能

function send() {
    var data = $("#form").serialize();

    $.ajax({
        type : 'POST',
        url : 'upload',
        data : data,
        success : function(data) {
            alert(data);
        },
        error : function(data) {// if error occured
            alert("Error occured.please try again " + data);
        },

        dataType : 'html'
    });
}

现在警报显示后我收到的所有内容都是

array(0){
}

我无法看到我选择的文件,不像我使用普通的提交按钮,每件事情都正常,我需要有人告诉我这里我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要使用FormData对象(注意:对于IE,它只能在IE10 +中使用)。

这里有很多例子,底部有一个jQuery。

https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects?redirectlocale=en-US&redirectslug=Web%2FAPI%2FFormData%2FUsing_FormData_Objects