我正在使用yii2
。我正在尝试选择一个文件,然后将其保存到我的数据库表中。我正在使用core PHP
。以下是我的代码
<form action = <?=\yii\helpers\Url::toRoute(['meteracceptanceheader/import'])?> method ="post"
enctype="multipart/form-data">
.
.
.
.
.
.
.
<div class="row">
<div class="col-md-2">
Upload-Image
<input type="file" name="file"/>
<br />
<input type="submit" class="btn btn-primary pull-left" />
</div>
</div>
</form>
控制器
public function actionImport()
{
.
.
. // my other code
$file = $_FILES['file'];
$fileName = $_FILES['file']['name'];
$fileExt = explode('.',$fileName);
print_r($file);
die();
.
.
.
.
return $this->render('excel_finish', ['records_saved' => $ok_count,'status_arr'=>$status_arr]);
}
数据库表
在上表中,id
是自动增量accpt_id
是我已经拥有的model id
,file_path
是应该保存的文件名,例如123.jpg
。
该文件应保存到文件夹uploads/meter_acceptance/
中,并附加文件名。
注意:
我已经知道如何通过活动表单上传图像,但是在这里,我想以传统方式进行上传。
任何帮助将不胜感激。
答案 0 :(得分:1)
您的控制器应该是这样
public function actionUpload(){
$model = new Images();
$uploadPath = Yii::getAlias('@root') .'/uploads/';
if (isset($_FILES['image'])) {
$file = \yii\web\UploadedFile::getInstanceByName('image');
$original_name = $file->baseName;
$newFileName = \Yii::$app->security
->generateRandomString().'.'.$file->extension;
// you can write save code here before uploading.
if ($file->saveAs($uploadPath . '/' . $newFileName)) {
$model->image = $newFileName;
$model->original_name = $original_name;
if($model->save(false)){
echo \yii\helpers\Json::encode($file);
}
else{
echo \yii\helpers\Json::encode($model->getErrors());
}
}
}
else {
return $this->render('upload', [
'model' => $model,
]);
}
return false;
}