Răsfoiți Sursa

PC上传删除

lhq 4 ani în urmă
părinte
comite
411c60f78d
1 a modificat fișierele cu 23 adăugiri și 13 ștergeri
  1. 23 13
      Controller/PcInfo.py

+ 23 - 13
Controller/PcInfo.py

@@ -6,6 +6,7 @@ import traceback
 import os
 from urllib import request, parse
 import requests
+from boto3 import Session
 from django.http import HttpResponse
 
 from django.views.generic.base import View
@@ -208,7 +209,7 @@ class PcInfo(View):
         pc_version = request_dict.get('pc_version', None)
         pc_test = request_dict.get('pc_test', None)
         lang = request_dict.get('lang', None)
-        # file_name = request.FILES.get('file_name', None)
+        file_name = request_dict.get('file_name', None)
         file_type = request_dict.get('file_type', None)
         package = request_dict.get('package', None)
         explain = request_dict.get('explain', '')
@@ -217,7 +218,7 @@ class PcInfo(View):
         # logger.info('文件名字:')
         # logger.info(file_name)
         param_flag = CommonService.get_param_flag(
-            data=[pc_name, bundle_version, pc_version, pc_test, lang, file_type, package, is_update, is_open])
+            data=[pc_name, bundle_version, pc_version, pc_test, lang, file_name, file_type, package, is_update, is_open])
         if param_flag is not True:
             return response.json(444)
         else:
@@ -235,9 +236,9 @@ class PcInfo(View):
                     config=botocore.client.Config(signature_version='s3v4'),
                     region_name='cn-northwest-1'
                 )
-                download_link = '{pc_name}/{pc_version}_{bundle_version}_{pc_test}'.format(
+                download_link = '{pc_name}/{pc_version}_{bundle_version}_{pc_test}_{file_name}'.format(
                     pc_name=pc_name, pc_version=pc_version, bundle_version=bundle_version,
-                    pc_test=pc_test)
+                    pc_test=pc_test, file_name=file_name)
                 response_url = aws_s3_guonei.generate_presigned_url(
                     ClientMethod='put_object',
                     Params={
@@ -369,15 +370,24 @@ class PcInfo(View):
         try:
             # 删除s3和数据库里的相应数据
             file_path = file[0].download_link
-            print(file_path)
-            aws_s3_guonei = boto3.client(
-                's3',
-                aws_access_key_id=AWS_ACCESS_KEY_ID[0],
-                aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
-                config=botocore.client.Config(signature_version='s3v4'),
-                region_name='cn-northwest-1'
-            )
-            aws_s3_guonei.delete_object(Bucket='pc-package', Key=file_path)
+            session = Session(aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                              aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+                              region_name='cn-northwest-1')
+            s3 = session.resource('s3')
+            bucket = s3.Bucket('pc-package')
+            obj_list = []
+            # 获取存储桶的所有对象,判断对象是否上传成功
+            for obj in bucket.objects.all():
+                obj_list.append(obj.key)
+            if file_path in obj_list:
+                aws_s3_guonei = boto3.client(
+                    's3',
+                    aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                    aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+                    config=botocore.client.Config(signature_version='s3v4'),
+                    region_name='cn-northwest-1'
+                )
+                aws_s3_guonei.delete_object(Bucket='pc-package', Key=file_path)
             file.delete()
         except Exception as e:
             return response.json(176, repr(e))