我想知道我是否以及如何将整个文件存储在我的数据库中,如下所示
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| file | blob | NO | | NULL | |
| USER_id | int(11) | NO | MUL | NULL | |
| zname | varchar(40) | NO | | NULL | |
| date | date | NO | | NULL | |
| filetyp | varchar(10) | NO | | NULL | |
+---------+-------------+------+-----+---------+----------------+
我设法制作了一个文件上传小工具,背后没有任何功能。可以选择文件并按“提交”按钮。但就是这样。
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)
);
echo $form->labelEx($model,'');
echo $form->fileField($model,'image');
echo $form->error($model,'image');
echo CHtml::submitButton('Submit');
$this->endWidget();
现在我不知道如何制作一个将我的文件保存到我的数据库中的Controller Funktion。如果“文件”(DB文件)是文件的文件名,则zname =文件名,日期为上载的日期,文件类型为文件类型。
有关更多信息,我有一个关于下载文件的问题: Download link from Database BLOB with yii Framework
答案 0 :(得分:0)
好的我做的是将其添加到视图中:
<?php echo $this->renderPartial('_form', array('model'=>$model)); ?>
Controller有$ model作为USERZ模块(DB) 被调用的表单看起来像这样
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'userz-form',
'enableAjaxValidation'=>false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)); ?>
<div class="row">
<?php echo $form->fileField($model,'file'); ?>
<?php echo $form->error($model,'file'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Submit' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div>
我还在控制器中添加了一个if子句:
if(isset($_POST['USERZ']))
{
$model->attributes=$_POST['USERZ'];
$model->file=CUploadedFile::getInstance($model,'file');
$model->beforeSave();
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
the bevore Save funktion是USERZ模型中的一个功能,它看起来像这样,并且可以解决文件中的所有内容:
public function beforeSave()
{
if($file=CUploadedFile::getInstance($this,'file'))
{
$this->zname=$file->name;
$this->filetype=$file->type;
$this->date=date('Y-m-d');
$this->USER_id=Yii::app()->user->getId();
$this->file=file_get_contents($file->tempName);
}
return parent::beforeSave();
}