xielin 5 vuotta sitten
vanhempi
commit
97c6c0f18f

+ 58 - 0
app/Http/Controllers/OssController.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Http\Controllers;
+use AliCloud\Core\Profile\DefaultProfile;
+use AliCloud\Core\DefaultAcsClient;
+use AliCloud\Core\Exception\ServerException;
+use AliCloud\Core\Exception\ClientException;
+use AliCloud\STS\AssumeRoleRequest;
+
+class OssController extends Controller
+{
+    public function getSts()
+    {
+        $regionID = "cn-zhangjiakou";
+        $endpoint = "sts.cn-zhangjiakou.aliyuncs.com";
+        DefaultProfile::addEndpoint($regionID, $regionID, "Sts", $endpoint);
+        $iClientProfile = DefaultProfile::getProfile($regionID, 'LTAIG3B3vMgxdnGg', 'EJY6vwMje1npqZYmIwrmUWlVTiVW18');
+        $client = new DefaultAcsClient($iClientProfile);
+        // 指定角色ARN
+        $roleArn = "acs:ram::1211062998797452:role/ramoss-sts";
+        // 在扮演角色时,添加一个权限策略,进一步限制角色的权限
+        // 以下权限策略表示拥有可以读取所有OSS的只读权限
+$policy = <<<POLICY
+        {
+          "Statement": [
+            {
+              "Action": [
+                "oss:Get*",
+                "oss:List*"
+              ],
+              "Effect": "Allow",
+              "Resource": "*"
+            }
+          ],
+          "Version": "1"
+        }
+POLICY;
+        $request = new AssumeRoleRequest();
+        // RoleSessionName即临时身份的会话名称,用于区分不同的临时身份
+        $request->setRoleSessionName("alice");
+        $request->setRoleArn($roleArn);
+        $request->setPolicy($policy);
+        $request->setDurationSeconds(3600);
+        try {
+            $response = $client->getAcsResponse($request);
+            $result['region'] = $regionID;
+            $result['accessKeyId'] = $response->Credentials->AccessKeyId;
+            $result['accessKeySecret'] = $response->Credentials->AccessKeySecret;
+            $result['stsToken'] = $response->Credentials->SecurityToken;
+            $result['bucket'] = 'uptoyo';
+            return $result;
+        } catch (ServerException $e) {
+            return $this->response->error($e->getMessage(), 500);
+        } catch (ClientException $e) {
+            return $this->response->error($e->getMessage(), 500);
+        }
+    }
+}

+ 0 - 22
app/Http/Controllers/UploadController.php

@@ -46,28 +46,6 @@ class UploadController extends Controller
         }
     }
 
-    public function uploadStream(Request $request)
-    {
-        if ($request->hasFile('image') && $request->file('image')->isValid()) {
-            $path = $request->get('path') ? $request->get('path') . '/' : date('Ym') . '/';
-            //获取文件的扩展名
-            $kuoname = $request->file('image')->getClientOriginalExtension();
-            //获取文件的绝对路径,但是获取到的在本地不能打开
-            $filePath = $request->file('image')->getRealPath();
-            //要保存的文件名 时间+扩展名
-            $fileurl = $filename = time() . '_' . uniqid() . '.' . $kuoname;
-            $imageUrl = Storage::put($path . $filename, file_get_contents($filePath));
-            if ($imageUrl) {
-                return [
-                    'data' => ['url' => $path . $fileurl]
-                ];
-            } else {
-                return $this->response->error('上传失败,请重试', 500);
-            }
-        } else {
-            return $this->response->error('上传失败,请重试', 500);
-        }
-    }
 
     public function uploadImages(Request $request)
     {

+ 3 - 0
composer.json

@@ -7,12 +7,15 @@
     "require": {
         "php": ">=7.1.3",
         "acekyd/laravelmp3": "^1.0",
+        "alibabacloud/sdk": "^1.7",
+        "aliyuncs/oss-sdk-php": "^2.3",
         "dingo/api": "^2.2",
         "doctrine/dbal": "^2.9",
         "guzzlehttp/guzzle": "^6.3",
         "hhxsv5/laravel-s": "~3.4.0",
         "intervention/image": "^2.4",
         "jeroendesloovere/distance": "1.0.2.1",
+        "jiajialu/aliyun-sdk-sts": "^3.0",
         "junliuxian/ali-oss-storage": "~2.0",
         "laravel/lumen-framework": "5.8.*",
         "multilinguals/apollo-client": "^0.1.2",

+ 2 - 1
routes/api.php

@@ -19,7 +19,7 @@ $api->version('v1', [
     //百度编辑器
     $api->get('ueupload', 'UeditorController@index');
     $api->post('ueupload', 'UeditorController@index');
-    $api->post('uploadfile', 'UploadController@uploadStream');
+
     $api->group(['middleware' => 'jwt.chxq_auth'], function ($api) {
         $api->get('user', 'UserController@index');
 
@@ -27,6 +27,7 @@ $api->version('v1', [
         $api->post('upload', 'UploadController@uploadImage');
         $api->post('multi_upload', 'UploadController@uploadImages');
         $api->post('upload/mp3', 'UploadController@uploadMp3');
+        $api->get('getsts', 'OssController@getSts');
 
         //自提点列表
         $api->get('/pickupNode/index', 'ConfigPickupNodeController@index');