Thinkphp5 集成阿里云OSS
------安装阿里云OSS SDK -----
composer require aliyuncs/oss-sdk-php
------配置阿里云设置-- tp根目录/application/config.php------
'alioss' => [ 'acckeyid' => 'LTAI4Fqono2Jc1LBjMcB****', //keyid 'acckeysecret' => 'LYsINIwfRjVHu60aC1NGYXm4r****', //keysecret 'endpoint' => 'http://ddddmehlhlyou-test-aliyunoss.xiaoguan.net', //外网域名,自定义域名 - 必须绑定备案的域名否则会自动下载 'bucket' => 'ddddmehlhlyou-test', //bucket名称 'custom' => 'true', //是否自定义域名 ]
------通用API方法封装 -- tp根目录/application/extra/api.php------
<?php // +---------------------------------------------------------------------- // | 通用方法 // +---------------------------------------------------------------------- use OSS\OssClient; use OSS\Core\OssException; class API { //上传实例化 public static function uploadOSS($filename, $filebase){ $alioss = config('alioss'); // 上传时可以设置相关的headers,例如设置访问权限为private和自定义元信息。 $options = array( OssClient::OSS_HEADERS => array( 'x-oss-object-acl' => 'private', 'x-oss-meta-info' => 'jonyguan-test' ), ); try { $newoss = new OssClient($alioss['acckeyid'], $alioss['acckeysecret'], $alioss['endpoint'], $alioss['custom']); } catch (OssException $e) { return $e->getMessage(); } try { $newoss->putObject($alioss['bucket'], $filename, $filebase, $options); } catch (OssException $e) { return $e->getMessage(); } $imgUrl = $alioss['endpoint'] . '/' . $filename; return $imgUrl; } //上传图片操作 public static function uploadImage($upfile){ $filebase = file_get_contents($upfile['tmp_name']); $name = $upfile['name']; $format = strrchr($name, '.');//截取文件后缀名如 (.jpg) /*判断图片格式*/ $allow_type = ['.jpg', '.jpeg', '.gif', '.png']; if (!in_array($format, $allow_type)) { API::ApiRes(0, "文件格式不在允许范围内哦"); } $nowtime = time(); $today = date("Y-m-d",$nowtime); $saveName = md5($nowtime . rand(000,999)); $filename = $today . '/' . $saveName.$format; return self::uploadOSS($filename, $filebase); } }
----控制器里调用--tp根目录/application/index/controller/index.php-----
use API; public function upimg() { $upfile = $_FILES['image']; $upimg = API::uploadImage($upfile); var_dump($upimg); }
----路由配置-tp根目录/application/route.php-----
<?php use think\Route; Route::post('upimg','index/Index/upimg');
----上传文件HTML---tp根目录/public/test.html----------访问此文件 http://localhost/test.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>tp5-aliyunoss上传实例</title> </head> <body> <form action="/upimg" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit"> </form> </body> </html>