文件上传时将目录写入数据库(basic版) [ 2.0 版本 ]
控制器:
public function actionCreate()
{
$model = new Goods();
if ($model->load(Yii::$app->request->post()))
{
$model->file= UploadedFile::getInstance($model, 'file');
//图片插入数据库时的路径,在Uploads下以当天日期为文件名,前提是在basic/web/下新建images/Uploads文件夹
$insert_path ='Uploads/'. date('Y-m-d' , time()) . '/';
// 图片保存在本地的路径:images/Uploads/当天日期/文件名,默认放置在basic/web/下
$base_path = 'images/'. $insert_path;
if ($model->file&& $model->validate())
{
// 如果路径中的文件夹不存在,则新建这一文件夹
if(!is_dir($base_path)) {
mkdir($base_path , 0777);
}
// 将图片上传到本地
$model->file->saveAs($base_path . $model->file->baseName . '.' . $model->file->extension);
// 为了方便在view中遍历出来,在数据库以“当天日期/文件名”形式保存
$model->file= $insert_path . $model->file->baseName . '.' . $model->file->extension;
}
// 保存数据
$model->save();
}
return $this->render('create', ['model' => $model]);
}
create视图:
<?= $form->field($model, 'file')->fileInput()->label(false) ?>
这是我在项目移植时这么做的,因为用同一个数据库,为了保证之前数据库中存的图片路径“Uploads/日期/图片名”有效才这么做的,希望对大家有所帮助
李记辉
注册时间:2015-05-07
最后登录:1小时前
在线时长:121小时8分
最后登录:1小时前
在线时长:121小时8分
- 粉丝12
- 金钱67770
- 威望20
- 积分69180
共 2 条评论
真是看不懂呢
看的好蒙呀