| @@ -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] |