用于CActiveForm的yii xupload mysql

用于CActiveForm的yii xupload mysql,yii,upload,blueimp,yii-xupload,Yii,Upload,Blueimp,Yii Xupload,我正在尝试将yii的xupload扩展包含在CActiveForm中,我将遵循以下步骤 但是我做不到。我有一个表单,其中包含用户名和文件名字段(允许用户上传并从视图中查看) 这是我的看法 <?php $form = $this->beginWidget('CActiveForm', array( 'id' => 'form-form', 'enableAjaxValidation' => false, //This is very

我正在尝试将yii的xupload扩展包含在CActiveForm中,我将遵循以下步骤 但是我做不到。我有一个表单,其中包含用户名和文件名字段(允许用户上传并从视图中查看) 这是我的看法

<?php
$form = $this->beginWidget('CActiveForm', array(
      'id' => 'form-form',
      'enableAjaxValidation' => false,
        //This is very important when uploading files
      'htmlOptions' => array('enctype' => 'multipart/form-data'),
    ));
  ?>    
    <div class="row">
        <?php echo $form->labelEx($model,'username'); ?>
        <?php echo $form->textField($model,'username'); ?>
        <?php echo $form->error($model,'username'); ?>
    </div>
    <!-- Other Fields... -->
    <div class="row">
        <?php echo $form->labelEx($model,'attachment_photo'); ?>
        <?php
    $this->widget('xupload.XUpload', array(
        'url' => Yii::app()->createUrl("form/uploadAdditional", array("parent_id" => 1)),
        'model' => $model,//An instance of our model
        'attribute' => 'file',
        'multiple' => true,
        //Our custom upload template
        'uploadView' => 'application.views.site.upload',
        //our custom download template
        'downloadView' => 'application.views.site.download',
        'options' => array(//Additional javascript options
            //This is the submit callback that will gather
            //the additional data  corresponding to the current file
            'submit' => "js:function (e, data) {
                var inputs = data.context.find(':input');
                data.formData = inputs.serializeArray();
                return true;
            }"
        ),
    ));
    ?>


重要的是$\u POST数组的外观。(请与Firebug或Fiddler核对)

您的$\u帖子应该如下所示:

array (
  'form-form' => array ( /* stuff for additional form data */)),
  'XupLoad' => array ( /* stuff pertaining to XuLoad */)),
)
通过这种方式,附加表单数据与XupLoad数据分离。Xupload扩展中包含的操作处理数组的
$\u POST['Xupload']
部分。您必须编写代码来处理数组的
$\u POST['form-form']
部分

顺便说一句,Blueimp的jQuery文件上传有一个新版本,有重要的改进和错误修复。XupLoad扩展似乎不包括此最新版本

我建议使用Blueimp的最新版本。它有一个UploadHandler类,负责服务器端的所有事情。最新版本写得很好。您仍然需要添加代码来处理其他表单数据


事后思考:看起来您正在嵌套小部件。我不确定这是否可行。检查浏览器中的页面源。确保生成的HTML是正确的。可能是因为您正在生成嵌套表单,我对这些表单的工作原理表示怀疑。

这是我的实时测试站点。我已经将表单键入到mulitpart

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

/文件上传小部件/

<?php $this->widget('bootstrap.widgets.TbFileUpload', array(
'url' => Yii::app()->createUrl("form/upload"),
        'model' => $model,
        'attribute' => 'file',
        'multiple' => true,
        'options' => array(
            'maxFileSize' => 3000000,
            'acceptFileTypes' => "js:/(\.|\/)(jpe?g|png)$/i",
        )

));
 ?>


当文件处于表单中时,我无法上载该文件。

现在,请忘记您正在调用的小部件。以下是应生成的HTML示例,以便将jQuery FileUpload与其他表单字段组合在一起:

<!-- The file upload form used as target for the file upload widget -->
<form id="fileupload" action="" method="POST" enctype="multipart/form-data">
        <input name="Input_upload[titleInArchive]" id="Input_upload_titleInArchive" type="text" />   

    <div class="row fileupload-buttonbar">
        <div class="span7">
            <!-- The fileinput-button span is used to style the file input field as button -->
            <span class="btn btn-success fileinput-button">
                <i class="icon-plus icon-white"></i>
                <span>Add files...</span>
                <input type="file" name="files[]" multiple>
            </span>
            <button type="submit" class="btn btn-primary start">
                <i class="icon-upload icon-white"></i>
                <span>Start upload</span>
            </button>
    <!-- the rest of the demo jQuery File upload page ... -->
</form>

我希望我说的有道理……

非常感谢。。我将尝试blueimp的最新版本,看看它是如何工作的=)我做不到,所以我坚持基本上传。您是否知道我可以将yii booster progressbar集成到yii基本文件上载中?不,我不熟悉yii booster progressbar。但是,我认为在基本文件上传中添加progressbar是不可能的,因为根本没有可用的进度信息。您是否有要将文件上传程序集成到其中的实时站点?还有:你想要什么功能:chuncked上传、progressbar、图像预览?(我上周集成了jqueryfileuploader,花了我整整一天(12小时)的时间…)好的。如果查看页面源,则有两个嵌套表单。我认为这是一个问题。这可能是当您点击开始上传时XHR请求崩溃的原因(Firebug返回0个请求)。我将在下一个答案中显示一个工作的HTML表单:对不起,我不太清楚你的意思。是把两种形式变成一种形式吗?我已经删除了form.php(fileupload temp)中的一个,我尝试在firebug中查看源代码,它只显示一个表单。这就是你的意思吗?好的,我看你现在有一张表格了。那很好。但是,您选择了表单。选择另一个表单,即属于jQuery文件上载的表单。现在,.fileuploader()缺少要初始化的文件。您需要生成一个表单,带有这样一个标记:jQuery File Uploader需要这个来开始。如果无法让它工作,只需从jQuery File Upload演示开始。省去多余的表单数据。首先让它与您的服务器一起工作,这样您就可以实际上传文件了。只有这样,才能添加“”字段。看看你的$\u帖子是什么样子的。如果看起来还可以,那么在服务器端写下对这一字段的处理……非常感谢,我想我得到了XHR 0request部分,其中jquery fileupload表单与表单一起崩溃。这是否意味着我需要添加FormView?不确定。什么是FormView?
$_POST['Form']['username'] ...
$_POST['Form']['identity_card'] ...