Browse Source

上传对象到阿里云接口

locky 2 weeks ago
parent
commit
04e526386b
2 changed files with 54 additions and 8 deletions
  1. 4 8
      Controller/CloudStorage.py
  2. 50 0
      Controller/TestApi.py

+ 4 - 8
Controller/CloudStorage.py

@@ -13,7 +13,8 @@ from itertools import groupby
 from operator import itemgetter
 from packaging import version
 from urllib.parse import quote, parse_qs, unquote
-
+from aliyunsdkcore import client
+from aliyunsdkcore.request import CommonRequest
 import boto3
 import jwt
 import paypalrestsdk
@@ -25,7 +26,7 @@ from django.views.generic.base import View
 from AdminController.CloudServiceManage.AgentOrderController import AgentOrderView
 from Ansjer.config import SERVER_DOMAIN, PAYPAL_CRD, SERVER_DOMAIN_SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, \
     AWS_ARN, OAUTH_ACCESS_TOKEN_SECRET, DETECT_PUSH_DOMAINS, CONFIG_INFO, CONFIG_CN, BINOCULAR_DEVICE_TYPE, CONFIG_US, \
-    CONFIG_TEST, CONFIG_EUR
+    CONFIG_TEST, CONFIG_EUR, OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN
 from Controller.CheckUserData import DataValid
 from Controller.CloudPhoto.CloudServiceController import CloudServiceController
 from Controller.PaymentCycle import Paypal
@@ -620,15 +621,10 @@ class CloudStorageView(View):
         channel = request_dict.get('channel', None)
 
         if not all([uid, channel]):
-            return response.json(444, 'uidToken')
+            return response.json(444)
 
         try:
             # 阿里云 oss sts
-            from aliyunsdkcore import client
-            from aliyunsdkcore.request import CommonRequest
-            import json
-            from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN
-            
             storage = '{uid}/vod{channel}/'.format(uid=uid, channel=channel)
             bucket_name = 'asj-test-1'  # 存储桶名称
             endpoint = 'oss-cn-shenzhen.aliyuncs.com'  # OSS endpoint

+ 50 - 0
Controller/TestApi.py

@@ -209,6 +209,8 @@ class testView(View):
             return self.base64EncodeOrDecode(request_dict, response)
         elif operation == 'handlingDuplicateOrders':
             return self.handlingDuplicateOrders(request_dict, response)
+        elif operation == 'aliPutObject':
+            return self.aliPutObject(response)
         else:
             return response.json(414)
 
@@ -1626,3 +1628,51 @@ class testView(View):
             return response.json(0)
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def aliPutObject(response):
+        try:
+            # 直接使用STS数据作为变量
+            sts_access_key_id = "STS.NYXaRL44e2p1khJbcp1xjhufi"
+            sts_access_key_secret = "6eT2zV7o3knRoFteTTVbsUDam7EU5TnXahNMz5m4APRU"
+            sts_security_token = "CAIS4wJ1q6Ft5B2yfSjIr5rtKuj42etEhbLaaU77hmMlPfdGh7DNizz2IHFIf3NhAe0bv/kzm2lX7/YYlr8uEsBnHhyZR+1NwawM2juZOtOYkvvstX3DZVVFQjr9MQXy+eOPSeibJYqvcpXAQlTAkTAJttmeXD6+XlujHISUgJp8FLo+VRW5ajw0a7U7IRB5+o1gaxm3D/u2NQPwiWf9FVdhvhEG6Vly8qOi2MaRmGi8/FTx0b0SvJ+jYMrmPcB3PtJjXsypmbUxNIi5iX8IskMWrvgn1vAYp2ue4uvwWQcBv0+0VMPP6cBqIQNDYaw3JrVJtvCUl4cj67CIzdWvlkscYL0KCnuGFNq6rtDYA+SyLcaf/it+/rQVuTrmFO4W02tMCRpzXGvBS8sgp6sWAlWqxmVvoEsLLMwuziPiKs7Lmeh9quFWxB6LhtHhbGOEKNbC2gV1VNJCKS1hWXEYtT5601RYG2QkGoABR8J+SPZDig+XKZBaMd8TXar3cCWpqjiJUlbITgqO33LP6ZPfpTOZAIgNHng7OHn853H/eqXCZJlfommBc6k4NjJGq5IEO0GgRkgSBOtdS63eqLMfT9uNl1cIFiWeWpCJl2cBozOz8K+VL6ZvrFZXwVb/FuzN8wFteabbXbveOiMgAA=="
+            bucket_name = "asj-test-1"
+            endpoint = "oss-cn-shenzhen.aliyuncs.com"
+            storage = "517J385BNUGP3CPP111A/vod1/"
+            region = "cn-shenzhen"
+            
+            # 获取请求参数中的文件路径
+            file_path = "F:/图片/test.jpeg"
+            
+            # 获取文件名
+            import os
+            file_name = os.path.basename(file_path)
+            
+            # 构建OSS中的对象名称
+            object_name = storage + file_name
+            
+            # 导入oss2库
+            import oss2
+            
+            # 创建Auth对象,用于认证
+            auth = oss2.StsAuth(sts_access_key_id, sts_access_key_secret, sts_security_token)
+            
+            # 创建Bucket对象
+            bucket = oss2.Bucket(auth, endpoint, bucket_name)
+            
+            # 上传文件
+            with open(file_path, 'rb') as file_obj:
+                result = bucket.put_object(object_name, file_obj)
+            
+            # 构建返回结果
+            return_data = {
+                'status_code': result.status,
+                'request_id': result.request_id,
+                'etag': result.etag,
+                'object_name': object_name,
+                'url': f'https://{bucket_name}.{endpoint}/{object_name}'
+            }
+            
+            return response.json(0)
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))