1
0
Fork 0
owl-admin-starter/app/Http/Controllers/Api/OssController.php

55 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
class OssController extends BaseController
{
public function sign(Request $request)
{
// 账户要有 OSS bucket 的上传 putObject 权限
// OSS bucket 要开启跨域配置
// 阿里云 RAM access_key
$id = 'xxx';
// 阿里云 RAM access_secret
$key = 'xxx';
// OSS EndPoint, 完整域名
$host = 'https://owl-admin-starter.oss-cn-chengdu.aliyuncs.com';
// 访问域名, 推荐使用自定义域名
// 如果使用 EndPoint, 直接访问文件时, 会下载文件, 无法预览
$url = 'http://oss.abcdefg.fun';
// 文件上传目录, 以 / 结尾
$dir = $request->input('upload', 'upload/');
// 请求有效期(30秒), 超过时间将无法上传文件
$expire = 30;
$end = time() + $expire;
// 文件大小(1000MB), 超过将无法上传文件
$max = 1048576000;
$arr = [
'expiration' => str_replace('+00:00', '.000Z', gmdate('c', $end)),
'conditions' => [
['content-length-range', 0, $max],
['starts-with', '$key', $dir]
]
];
$policy = json_encode($arr);
$base64_policy = base64_encode($policy);
$string_to_sign = $base64_policy;
$signature = base64_encode(hash_hmac('sha1', $string_to_sign, $key, true));
$data = [
'accessid' => $id,
'host' => $host,
'policy' => $base64_policy,
'signature' => $signature,
'expire' => $end,
'dir' => $dir,
'url' => $url,
];
return $this->json($data);
}
}