@@ -1,5 +1,8 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
+import base64 |
|
4 |
+ |
|
5 |
+import requests |
|
3 | 6 |
from django_logit import logit |
4 | 7 |
from django_response import response |
5 | 8 |
from TimeConvert import TimeConvert as tc |
@@ -62,15 +65,41 @@ def get_contribtion_contract_api(request): |
||
62 | 65 |
}) |
63 | 66 |
|
64 | 67 |
|
68 |
+def generate_file_from_qiniu(file_url): |
|
69 |
+ try: |
|
70 |
+ data = requests.get(file_url).content |
|
71 |
+ data = base64.b64encode(data).decode('utf-8') |
|
72 |
+ except Exception: |
|
73 |
+ data = None |
|
74 |
+ return data |
|
75 |
+ |
|
76 |
+ |
|
77 |
+def generate_files_from_qiniu(file_urls): |
|
78 |
+ files = [] |
|
79 |
+ for file_url in file_urls: |
|
80 |
+ file_b64str = generate_file_from_qiniu(file_url) |
|
81 |
+ if not file_b64str: |
|
82 |
+ continue |
|
83 |
+ files.append({ |
|
84 |
+ 'FileBody': file_b64str, |
|
85 |
+ 'FileName': file_url.split('/')[-1] |
|
86 |
+ }) |
|
87 |
+ return files |
|
88 |
+ |
|
89 |
+ |
|
65 | 90 |
def upload_contribution_images(contribution_id): |
66 | 91 |
# 上传MemberActivityContributionInfo图片 https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles |
67 | 92 |
|
68 | 93 |
contribtuon = MemberActivityContributionInfo.objects.get(contribution_id=contribution_id) |
69 | 94 |
|
70 | 95 |
# TODO: 从 MemberActivityContributionInfo 生成 files 对象 |
71 |
- file_names = [image['image_url'].split('/')[-1] for image in contribtuon.images] |
|
96 |
+ file_urls = [image['image_url'] for image in contribtuon.images] |
|
97 |
+ file_names = [file_url.split('/')[-1] for file_url in file_urls] |
|
72 | 98 |
file_type = file_names[0].split('.')[-1] |
73 | 99 |
files = get_images_data(file_names) |
100 |
+ # Redis 已无缓存的数据 |
|
101 |
+ if len(files) != len(file_names): |
|
102 |
+ files = generate_files_from_qiniu(file_urls) |
|
74 | 103 |
# files = [ |
75 | 104 |
# { |
76 | 105 |
# "FileBody": "文件base64编码,不含逗号前字符,即data:image/png;base64,", |
@@ -21,4 +21,4 @@ def get_images_data(file_names): |
||
21 | 21 |
return [{ |
22 | 22 |
'FileBody': v, |
23 | 23 |
'FileName': k |
24 |
- } for k, v in zip(file_names, file_b64strs)] |
|
24 |
+ } for k, v in zip(file_names, file_b64strs) if v] |