Laravel操作阿里OSS对象存储
作者: 何忠利 • 发表于 2018-06-13
需要对laravel框架有基本了解,如不具备请移步 laravel
1.composer.json添加,在执行 composer update
"require": {
"aliyuncs/oss-sdk-php": "~2.0",
}
2.控制器IndexController.php
<?php
namespace App\Http\Controllers\blog;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Common\OSS;
class IndexController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$ossClient = new OSS('hezhongli');
$imageUrl = $ossClient->upimage($request->file('img'));
// dd($imageUrl);
// to do ....
}
...
}
3.模型OSS.php
<?php
namespace App\Common;
use OSS\OssClient;
use OSS\Core\OssException;
class OSS
{
// 可以设置在配置文件中用laravel中用config()获取
static $accessKeyId = 'xxxx'; // accessKeyId
static $accessKeySecret = 'xxxxxxxx'; // accessKeySecret
static $endpoint = 'http://oss-cn-beijing.aliyuncs.com'; // 地域节点 以实际情况填写
public $bucket = null; // 桶
public $acl = null; // 权限管理
public $ossObject = null; // oss对象
// 初始化oss
public function __construct($bucket, $acl = 'public-read')
{
$this->bucket = $bucket;
$this->acl = $acl;
$this->ossObject = new OssClient(static::$accessKeyId, static::$accessKeySecret, static::$endpoint);
return $this->ossObject;
}
// 修改权限
public function updateAcl($acl)
{
$this->acl = $acl;
}
// 修改桶
public function updateBucket($bucket)
{
$this->bucket = $bucket;
}
// 上传图片文件相关的到oss
public function upimage($file)
{
$imageType = ['png','gif','jpg','jpeg']; // 只支持这四种格式图片
// 判断类型是否正确
if(!in_array($file->getClientOriginalExtension(), $imageType)){
die('目前只支持png,gif,jpg,jpeg类型');
}
// 判断图片上传是否错误 error=0 成功
if($file->getError() > 0){
die('图片上传错误,error错误码为'.$file->getError());
}
// 开始处理上传oss逻辑
$object = time().'.'.$file->getClientOriginalExtension(); // 20101201012.png
$content = $file->getRealPath(); // 内容为临时文件中图片
$this->ossObject->putBucketAcl($this->bucket,$this->acl); // 权限管理
$ossServerInfo = $this->ossObject->uploadFile($this->bucket, $object, $content); // 上传
if($ossServerInfo['info']['http_code'] == 200 && $ossServerInfo['info']['url'] != null)
{
return $ossServerInfo['info']['url']; // 返回图片地址;
}else{
die('oss up fail'); // 上传失败!!!
}
}
// 上传文本文件相关的到oss
public function upText()
{
}
}
测试检查能正常上传。
文章关键词:
# Laravel
# OSS
# 阿里云
阅读量:
999
返回主页