0
我有一个窗体,有图像和音频文件的文件上传选项。图像文件正在保存,但不是音频文件,尽管路径会保存在数据库中。 形式模型:Yii2上传的音频文件没有得到保存在上传文件夹中
public $file;
public $binary_file;
public $s_date, $e_date;
public $comment;
public static function tableName()
{
return 'complain';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['complain'], 'required'],
[['complain'], 'string'],
[['file'], 'file', 'extensions' => 'png, jpg', 'maxFiles' => 4],
[['binary_file'], 'file', 'extensions' => 'mp3'],
[['s_date','e_date','complain_date', 'last_updated'], 'safe'],
[['comment'], 'string', 'max' => 255],
[['complain_no'], 'string', 'max' => 20],
];
}
和模型中,该文件将被实际保存:
形式:
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<div class='col-md-12'>
<?= $form->field($model, 'complain')->textarea(['rows' => 6]) ?>
</div>
<?php if ($model->isNewRecord) {?>
<div class='col-md-4'>
<?= $form->field($model, 'file[]')->fileInput(['multiple' => true])->label('Upload Image') ?>
</div>
<div class='col-md-4'>
<?php echo $form->field($model, 'binary_file')->fileInput()->label('Upload Mp3') ?>
</div>
<?php } ?>
<div class="form-group" style='padding-left:14px;'>
<?= Html::submitButton($model->isNewRecord ? 'Submit' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-info submit' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
的控制器代码:
public function actionCreate()
{
$model = new Complain();
if ($model->load(Yii::$app->request->post())) {
$model->save(false);
// save the image path to database and save the image to the upload folder
if($model->file = UploadedFile::getInstances($model,'file')) {
$path = 'uploads/img';
FileHelper::createDirectory($path);
foreach($model->file as $fil) {
$modelsComplain= new ComplainItem();
$modelsComplain->save(false);
$fil->saveAs('uploads/img/img'. $fil->extension);
$modelsComplain->file = 'img/img'. $fil->extension;
$modelsComplain->update(false);
}
}
if($model->binary_file = UploadedFile::getInstance($model,'binary_file')) {
$path = 'uploads/mp3';
FileHelper::createDirectory($path);
$modelsComplain= new ComplainItem();
$modelsComplain->save(false);
$model->binary_file->saveAs('uploads/mp3/mp3'. $model->binary_file->extension);
$modelsComplain->file ='mp3/mp3'. $model->binary_file->extension;
$modelsComplain->update(false);
}
return $this->redirect(['view', 'id' => $model->complain_id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}