test oss
parent
607384c912
commit
329b1af0c0
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\Api\KeywordController;
|
use App\Http\Controllers\Api\KeywordController;
|
||||||
|
use App\Http\Controllers\Api\OssController;
|
||||||
use App\Http\Controllers\Api\WebController;
|
use App\Http\Controllers\Api\WebController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
|
@ -8,3 +9,5 @@ Route::get('keyword', [KeywordController::class, 'index']);
|
||||||
Route::get('keyword/tree', [KeywordController::class, 'tree']);
|
Route::get('keyword/tree', [KeywordController::class, 'tree']);
|
||||||
|
|
||||||
Route::post('web/upload', [WebController::class, 'upload']);
|
Route::post('web/upload', [WebController::class, 'upload']);
|
||||||
|
|
||||||
|
Route::post('oss/sign', [OssController::class, 'sign']);
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,6 @@ namespace Tests\Feature;
|
||||||
|
|
||||||
// use Illuminate\Foundation\Testing\RefreshDatabase;
|
// use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
|
|
||||||
use Faker\Generator;
|
|
||||||
use Illuminate\Container\Container;
|
|
||||||
use Illuminate\Support\Testing\Fakes\Fake;
|
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
class ExampleTest extends TestCase
|
class ExampleTest extends TestCase
|
||||||
|
|
@ -16,8 +13,6 @@ class ExampleTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function test_the_application_returns_a_successful_response(): void
|
public function test_the_application_returns_a_successful_response(): void
|
||||||
{
|
{
|
||||||
$faker = Container::getInstance()->make(Generator::class);
|
dump(now());
|
||||||
|
|
||||||
dump($faker->name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue