yii2.0上传图片

model:

use Yii;
/** * 获取头像url地址 * @return 头像的url地址 */public function getPortraitUrl(){    return self::getAvatarUrlById($this->id);}

/** * 获取头像存放路径 * @return 头像的存放路径 */public static function getAvatarPathById($companyId){    $string = str_pad($companyId, 6, ‘0‘, STR_PAD_LEFT);    $path = ‘company/‘ . substr($string, 0, -4) . ‘/‘ . substr($string, -4, 2) . ‘/‘ . substr($string, -2, 2) . image_type_to_extension(IMAGETYPE_JPEG);;    return $path;}

/** * 通过用户ID获取头像url地址 */public static function getAvatarUrlById($companyId){    $path = self::getAvatarPathById($companyId);    $file = Yii::getAlias(‘@uploadPath/‘ . $path);    if (file_exists($file)) {        $makeTime = filemtime($file);        return Yii::getAlias(‘@uploadUrl/‘ . $path) . ‘?‘ . $makeTime;    }    return Yii::getAlias(‘@resUrl/‘ . self::DEFAULT_AVATAR);}
控制器:
use Yii;use app\models\Company;use yii\helpers\FileHelper;use yii\web\Controller;use yii\web\UploadedFile;
public function actionProfile(){    $id = Yii::$app->session[‘companyId‘];//得到id    $model = Company::findOne($id);    $imageUpload = UploadedFile::getInstance($model, ‘imageUpload‘);//返回一个上传文件    if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {//判断是否post提交,加载数据        if ($imageUpload && $model->validate([‘imageUpload‘])) {//数据验证            $path =  Company::getAvatarPathById($id);//图片的路径别名            $avatarImage = Yii::getAlias(‘@uploadPath/‘ . $path);//将路径别名转化为实际的路径            FileHelper::createDirectory(dirname(Yii::getAlias($avatarImage)));//创建目录            $imageUpload->saveAs(Yii::getAlias($avatarImage));//保存图片        }        if($model->save()) {            Yii::$app->session[‘companyName‘] = $model->name;        }    }    return$this->render(‘profile‘, [‘model‘ => $model]);}
视图显示:
use app\models\Company;
<?= $form->field($model, ‘imageUpload‘)->fileInput([‘maxlength‘ => true])->hint(‘建议上传尺寸:100*100--300*300‘) ?>

<?= $form->field($model, ‘imageUpload‘, [‘inputTemplate‘=>‘<img src="‘.\app\models\Company::getAvatarUrlById($model->id).‘" width="100px" height="100px" />‘])->staticControl() ?>

结果显示:网页显示本地显示 (当前ID.jpeg)

				
时间: 2024-10-12 07:50:48

yii2.0上传图片的相关文章

yii2.0下,单图片上传到搜狐云台以及图片上传到本机。

图片服务器接的是搜狐云台.在搜狐云台上有代码包,下载下来,放到yii框架的vendor下. yii2.0导入第三方库,很简单,写个autoload的文件,然后在入口脚本index.php中包含那个autoload文件就好了.具体到这个云台的库,只要包含代码中的autoload文件就好了. 简单介绍下搜狐云台的实现,用户会有一个对应的域名,然后选择建一些bucket,文件的上传下载都是在这个bucket中执行.函数调用在云台提供的文档中介绍的很清楚.这里就不再介绍了.同时我只从php的部分来介绍,

Yii2.0实用功能技巧解密之——分页功能

Yii中的分页功能主要由yii\web: Linkable接口.yii\widgets: LinkPager类和yii\data: Pagination类三个组成. yii\data: Pagination 主要功能是对分页中的参数进行设置,如当前页.每页大小.总页数,总记录数等. yii\widgets: LinkPager 主要是根据yii\data: Pagination类所提供的参数生成前台页面的分页html代码. 使用:先在action里面生成分页对象,然后在前台的LinkPager中

BUG YII2.0 $ is not defined

BUG描述:$ is not defined 没有加载jquery成功 原因:Yii2.0将JS代码默认加载页面加载后 解决方案: 第一种方案:最简单方法是在 assets\AppAsset.php 中加上,页面前加载 public $jsOptions = array( 'position' => \yii\web\View::POS_HEAD ); 第二种方案:But in production you usually want the scripts to load last, and i

[moka同学笔记]三、Yii2.0课程笔记(魏曦老师教程)

关联字段增加搜索 post表关联adminuser表,通过post.author_id  adminuser.id关联,在YII2.0生成搜索,关联字段搜索时,需要输入关联字段author的id才能搜索,这不符合我们的要求,我们要求输入作者名就可以搜索出来,该作者对应的post.

PHP框架Yii2.0安装(基础版、高级版)

最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指点出来. yii2.0的安装,官方提供了两种的安装办法,一种是通过composer来安装,另外一种是通过跟yii1.0的办法直接下载安装包来安装.至于对于第一种composer的安装,农成就不做多余的说明了,这里有很好的安装教程.点击进去就可以看到了,为此农成就不在说了,下面就给大家详细讲讲第二种通

Yii2.0中文开发向导——高级应用程序模板

高级应用程序模板这个模板用在大型的团队开发项目中,而且后台从前台独立分离出来以便于部署在多个服务器中.由于YIi2.0的一些新的特性,这个程序模板的功能要更深一点.提供了基本的数据库的支持,注册.密码找回等功能.安装可以通过Composer来安装如果没有安装Composer,先安装 curl -s http://getcomposer.org/installer | php 然后用如下命令来获取 php composer.phar create-project --prefer-dist --s

Yii2.0 实现RESTful风格的简单API

一.创建数据库 首先,在mysql中创建一个名为yii2basic的数据库,并创建一张名为player的表. 二.配置 1.app/config/db.php <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '', 'charset' => 'utf8',

yii2.0数据库查询修改等方法

yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all();    此方法返回所有数据: 这些查询出来是对象形式,但是一般转换成数组格式: Test::find()->asArray()->all();     加上asArray()就取得数组形式的数据了,下面的自行添加. Test::findOne($id);   此方法返回 主键 id=1  的一条数据(举个例子): 条件查询:wher

yii2.0 框架 载入 PHPExcel 类

我用的是composer 安装的, 自己引入的话找了好多的方法但是都不能引入 所以找了这个简单一点的. composer require "phpoffice/phpexcel"    用这个命令下载就可以(等一会时间),前提是你已经安装的composer 如果没有,就安装一个,就不多说了. 安装完成后 window 下打开命令窗口 输入compposer 查看是否安装成功,然后打开你的yii2.0(高级版)框架的verdor 这个文件夹 Shift+右键,打开命令窗口,运行上面那个下