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