@@ -1,7 +1,5 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 |
-import json |
|
3 | 2 |
|
4 |
-from django.conf import settings |
|
5 | 3 |
from django_logit import logit |
6 | 4 |
from django_response import response |
7 | 5 |
from TimeConvert import TimeConvert as tc |
@@ -10,6 +8,7 @@ from account.models import LensmanInfo |
||
10 | 8 |
from apps.contract.models import LensmanContributionContractInfo |
11 | 9 |
from apps.lensman.activity.models import LensmanContributionActivityIncomeExpensesInfo |
12 | 10 |
from member.models import MemberActivityContributionInfo |
11 |
+from utils.redis.rimage import get_images_data |
|
13 | 12 |
from utils.tencentcloud.ess import (create_document, create_flow, create_scheme_url, start_flow, |
14 | 13 |
test_upload_document_files, upload_document_files) |
15 | 14 |
|
@@ -69,15 +68,18 @@ def upload_contribution_images(contribution_id): |
||
69 | 68 |
contribtuon = MemberActivityContributionInfo.objects.get(contribution_id=contribution_id) |
70 | 69 |
|
71 | 70 |
# TODO: 从 MemberActivityContributionInfo 生成 files 对象 |
72 |
- files = [ |
|
73 |
- { |
|
74 |
- "FileBody": "文件base64编码,不含逗号前字符,即data:image/png;base64,", |
|
75 |
- "FileName": "test.png" |
|
76 |
- } |
|
77 |
- ] |
|
78 |
- file_type = 'png' |
|
79 |
- # upload_files_result = upload_document_files(files, file_type=file_type) |
|
80 |
- upload_files_result = test_upload_document_files(files, file_type=file_type) |
|
71 |
+ file_names = [image['image_url'].split('/')[-1] for image in contribtuon.images] |
|
72 |
+ file_type = file_names[0].split('.')[-1] |
|
73 |
+ files = get_images_data(file_names) |
|
74 |
+ # files = [ |
|
75 |
+ # { |
|
76 |
+ # "FileBody": "文件base64编码,不含逗号前字符,即data:image/png;base64,", |
|
77 |
+ # "FileName": "test.png" |
|
78 |
+ # } |
|
79 |
+ # ] |
|
80 |
+ # file_type = 'png' |
|
81 |
+ upload_files_result = upload_document_files(files, file_type=file_type) |
|
82 |
+ # upload_files_result = test_upload_document_files(files, file_type=file_type) |
|
81 | 83 |
|
82 | 84 |
return upload_files_result.FileIds |
83 | 85 |
|
@@ -248,6 +248,7 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
||
248 | 248 |
import os |
249 | 249 |
|
250 | 250 |
from logs.models import MchLogInfo |
251 |
+ from utils.redis.rimage import set_image_data |
|
251 | 252 |
file_type = request.POST.get('file_type', '') |
252 | 253 |
upload_qiniu = request.POST.get('upload_qiniu', '') |
253 | 254 |
compress = bool(request.POST.get('compress', 0)) |
@@ -270,6 +271,8 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
||
270 | 271 |
upload_file_req(file, file_path, bucket='tamron', compress=compress) |
271 | 272 |
file_url = qiniu_file_url(file_path, bucket='tamron') |
272 | 273 |
|
274 |
+ set_image_data(file, file_path=file_path, file_url=file_url) |
|
275 |
+ |
|
273 | 276 |
return { |
274 | 277 |
'width': width, |
275 | 278 |
'height': height, |
@@ -282,6 +285,8 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
||
282 | 285 |
upload_file_req(file, file_path, bucket='tamron', compress=compress) |
283 | 286 |
file_url = qiniu_file_url(file_path, bucket='tamron') |
284 | 287 |
|
288 |
+ set_image_data(file, file_path=file_path, file_url=file_url) |
|
289 |
+ |
|
285 | 290 |
return { |
286 | 291 |
'file_url': file_url, |
287 | 292 |
} |
@@ -0,0 +1,24 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+import base64 |
|
4 |
+ |
|
5 |
+from utils.redis.connect import r |
|
6 |
+from utils.redis.rkeys import IMAGES_B64_DATA |
|
7 |
+ |
|
8 |
+ |
|
9 |
+def set_image_data(file, file_path=None, file_url=None): |
|
10 |
+ if not file: |
|
11 |
+ return |
|
12 |
+ file_name = file_path.split('/')[-1] |
|
13 |
+ file.seek(0) |
|
14 |
+ data = file.read() |
|
15 |
+ data = base64.b64encode(data).decode('utf-8') |
|
16 |
+ r.pipeline().hset(IMAGES_B64_DATA, file_name, data).expire(IMAGES_B64_DATA, r.REDIS_EXPIRED_ONE_DAY).execute() |
|
17 |
+ |
|
18 |
+ |
|
19 |
+def get_images_data(file_names): |
|
20 |
+ file_b64strs = r.hmget(IMAGES_B64_DATA, file_names) |
|
21 |
+ return [{ |
|
22 |
+ 'FileBody': v, |
|
23 |
+ 'FileName': k |
|
24 |
+ } for k, v in zip(file_names, file_b64strs)] |
@@ -27,3 +27,6 @@ WXA_CODE_SID_SCENE_MAPPING = 'kodo:wxa:code:scene:mapping' # HASH, {sid: scene} |
||
27 | 27 |
|
28 | 28 |
# 七牛 |
29 | 29 |
QINIU_UPLOAD_LIST = 'kodo:qiniu:upload:list' |
30 |
+ |
|
31 |
+# 图片数据 |
|
32 |
+IMAGES_B64_DATA = 'kodo:images:b64:data' # HASH, {image_url: image_data}, ttl: 2 * 24 * 60 * 60 = 172800 # 2 days |