首页 » PHP » 正文

thinkphp5的上传、图片处理、多语言

首先来看上传和图片处理。tp5封装了常用的图片处理方法,可以很方便的直接使用。

1、首先通过composer安装图片处理库。composer的安装和使用参见这里

composer require topthink/think-image

下载完成后,目录位于vendor\topthink\think-image

2、上传

$file = request()->file('image');
$info = $file->validate(['size'=>9000000,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads');
if($info){
        // 成功上传后 获取上传信息
        // 输出 jpg
        //echo $info->getExtension();
        // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
        echo GOD_ROOT."public/uploads/".$info->getSaveName()."";
        // 输出 42a79759f284b767dfcb2a0197904287.jpg
        //echo $info->getFilename(); 
}else{
	// 上传失败获取错误信息
	echo $file->getError();
}

3、图片处理以图片切割为例

public function cutface() {
	$pic=str_replace(GOD_ROOT,'',input('face_images'));
	$image = \think\Image::open($pic);
	$newpic=md5(Session::get('admin_name')).'.'.$image->type();//设置新文件名
	$image->crop(input('w'), input('h'),input('x'),input('y'))->save('public/uploads/'.date('Ymd').'/'.$newpic);//切割
	$newpicpath=GOD_ROOT.'public/uploads/'.date('Ymd').'/'.$newpic;//设置新文件路径
	db('user')->where('username',Session::get('admin_name'))->update(['facepic'=>$newpicpath]);//更新数据库
	@unlink($pic);//删除原图
	echo $newpicpath;
}

4、多语言

首先配置文件内:

	'lang_switch_on' => true,
	'lang_list' => ['zh-cn','en-us',],

在application/lang下建立en-us.php语言包,例如:

return [
    // 固定文字语言包
    '用户名'        => 'username',
    '密码'        => 'password',
    '你好'    =>'hello',
];

控制器内需要引入:

use think\Lang;
lang::set('再见', 'byebye','en-us');//模板内使用{:lang('再见')}
lang::set(['按钮1'=>'button1','按钮2'=>'button2'],'','en-us'); //批量设置
Lang::get('登录成功') //使用语言包

语言切换:

	public function lang() {
		switch ($_GET['lang']) {
			case 'cn':
				cookie('think_var', 'zh-cn');
			break;
			case 'en':
				cookie('think_var', 'en-us');
			break;
			//其它语言
		}
	}	

<A lang='en' class='btn'>英文</A>  -  <A lang='cn' class='btn'>中文</A>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>
<script>
$('.btn').click(function(){
    var data={'lang':$(this).attr('lang')}
    $.get("{:url('Index/lang')}",data,function(){
    location.reload();
    })
})
</script>
博主的文章或程序如果给您带来了价值,感谢您打赏一二
微信扫码支付 支付宝扫码支付

发表评论