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