diff --git a/README.md b/README.md index b860eb9..c96638c 100644 --- a/README.md +++ b/README.md @@ -55,11 +55,11 @@ server { https://picbed.saintic.com -测试账号:demo +测试账号:test 测试密码:123456 -对外服务,允许匿名上传,但是目前上传的图片保留删除权利! +对外服务(请勿修改密码),允许匿名上传,但是目前上传的图片保留删除权利! ## 扩展钩子 diff --git a/src/utils/tool.py b/src/utils/tool.py index f0f871d..b8e45b4 100644 --- a/src/utils/tool.py +++ b/src/utils/tool.py @@ -24,6 +24,7 @@ comma_pat = compile(r"\s*,\s*") verticaline_pat = compile(r"\s*\|\s*") username_pat = compile(r'^[a-zA-Z][0-9a-zA-Z\_]{0,31}$') +point_pat = compile(r'^\w{1,9}\.?\w{1,9}$') def rsp(*args): @@ -124,6 +125,17 @@ def generate_random(length=6): return ''.join(myslice) +def format_upload_src(fmt, value): + if fmt and isinstance(fmt, string_types): + if point_pat.match(fmt): + if "." in fmt: + fmts = fmt.split('.') + return {fmts[0]: {fmts[1]: value}} + else: + return {fmt: value} + return dict(src=value) + + class Attribution(dict): def __getattr__(self, name): diff --git a/src/views/api.py b/src/views/api.py index 69b49c1..9f06e28 100644 --- a/src/views/api.py +++ b/src/views/api.py @@ -22,7 +22,7 @@ from utils.tool import allowed_file, parse_valid_comma, is_true, logger, sha1,\ parse_valid_verticaline, get_today, gen_rnd_filename, hmac_sha256, \ rsp, get_current_timestamp, ListEqualSplit, sha256, generate_random, \ - err_logger + err_logger, format_upload_src from utils.web import dfr, admin_apilogin_required, apilogin_required, \ set_site_config, check_username from utils._compat import iteritems @@ -599,6 +599,7 @@ def callback(result): ) return res #: 存储数据 + defaultSrc = data[0]["src"] pipe = g.rc.pipeline() pipe.sadd(rsp("index", "global"), sha) if g.signin and g.userinfo.username: @@ -610,7 +611,7 @@ def callback(result): user=g.userinfo.username if g.signin else 'anonymous', ctime=get_current_timestamp(), status='enabled', # disabled, deleted - src=data[0]["src"], + src=defaultSrc, sender=data[0]["sender"], senders=json.dumps(data) )) @@ -623,10 +624,13 @@ def callback(result): res.update( code=0, filename=filename, - src=data[0]["src"], sender=data[0]["sender"], api=url_for("api.shamgr", sha=sha, _external=True), ) + #: format指定图片地址的显示字段,默认src,可以用点号指定 + #: 比如data.src,那么返回格式{code, filename..., data:{src}, ...} + fmt = request.form.get("format", request.args.get("format")) + res.update(format_upload_src(fmt, defaultSrc)) else: res.update(msg="No file or image format allowed") return res