Forráskód Böngészése

APP上传日志更改为使用AWS

chenshibin 3 éve
szülő
commit
d25f8c1d5e
1 módosított fájl, 30 hozzáadás és 14 törlés
  1. 30 14
      Controller/AppLogController.py

+ 30 - 14
Controller/AppLogController.py

@@ -2,10 +2,12 @@
 # -*- coding: utf-8 -*-
 import time
 
+import boto3
+import botocore
 import oss2
 from django.views.generic.base import View
 
-from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
+from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY
 from Model.models import AppLogModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -26,8 +28,12 @@ class AppLogView(View):
         return self.validate(request.POST, operation)
 
     def validate(self, request_dict, operation):
-        token = request_dict.get('token', None)
         response = ResponseObject()
+        if operation == 'getUploadUrl':
+            return self.get_upload_url('123', request_dict, response)
+
+        token = request_dict.get('token', None)
+
         if token is None:
             return response.json(444)
 
@@ -35,8 +41,7 @@ class AppLogView(View):
         if token.code != 0:
             return response.json(token.code)
 
-        if operation == 'getUploadUrl':
-            return self.get_upload_url(token.userID, request_dict, response)
+
         elif operation == 'add':
             return self.do_add(token.userID, request_dict, response)
         elif operation == 'queryByAdmin':
@@ -50,17 +55,28 @@ class AppLogView(View):
 
     def get_upload_url(self, userID, request_dict, response):
         upload_type = request_dict.get('upload_type', None)
-        if upload_type:
-            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
-            bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
-            name = CommonService.createOrderID()
-            filename = str(name) + '.' + upload_type
-            obj = 'app_log/{userID}/'.format(userID=userID) + filename
-
-            url = bucket.sign_url('PUT', obj, 7200)
-            return response.json(0, {'put_url': url, 'filename': filename})
-        else:
+        if not upload_type:
             return response.json(444)
+        name = CommonService.createOrderID()
+        filename = str(name) + '.' + upload_type
+        obj = 'app_log/{userID}/'.format(userID=userID) + filename
+        aws_s3_client = boto3.client(
+            's3',
+            region_name=REGION_NAME,
+            aws_access_key_id=ACCESS_KEY_ID,
+            aws_secret_access_key=SECRET_ACCESS_KEY,
+            config=botocore.client.Config(signature_version='s3v4'),
+        )
+        response_url = aws_s3_client.generate_presigned_url(
+            ClientMethod='put_object',
+            Params={
+                'Bucket': 'ansjer-statres',
+                'Key': obj
+            },
+            ExpiresIn=3600
+        )
+        return response.json(0, {'put_url': response_url, 'filename': filename})
+
 
     def do_add(self, userID, request_dict, response):
         uid = request_dict.get('uid', None)