开发者社区 问答 正文

阿里云oss 上传回调自定义参数 json

在python中我是这样定义的

callbody = "{\"filename\":${object},\"size\":${size},\"mimeType\":${mimeType},\"path\":${x:\""+ upload_dir +"\"},\"uuid\":${x:"+ uuid +"}}"

print打印出来的结果:

{"filename":${object},"size":${size},"mimeType":${mimeType},"path":${x:"images"},"uuid":${x:11}}

我的服务器接收时自定义变量都为None

{'filename': 'images/TypeObjectClass.jpg', 'size': 22862, 'mimeType': 'image/jpeg', 'path': None, 'uuid': None}

我到底哪里出现错误了?

展开
收起
晨曦的希望 2019-05-25 00:09:34 6065 分享 版权
阿里云 AI 助理回答

从你的描述来看,问题可能出在你如何处理和填充模板字符串callbody中的占位符。在Python中,直接使用字符串格式化会更直观且易于管理动态数据。你尝试使用的是一种类似模板引擎的语法(如${object}),但Python并不直接支持这种写法进行字符串替换。正确的做法是使用Python内置的字符串格式化方法,比如f-string(Python 3.6及以上版本)、str.format()或者百分号(%)格式化。

使用f-string (推荐,Python 3.6+)

object = "images/TypeObjectClass.jpg"
size = 22862
mimeType = "image/jpeg"
upload_dir = "images"
uuid = 11

callbody = f'{{"filename":"{object}","size":{size},"mimeType":"{mimeType}","path":"{upload_dir}","uuid":{uuid}}}'
print(callbody)

使用str.format()

object = "images/TypeObjectClass.jpg"
size = 22862
mimeType = "image/jpeg"
upload_dir = "images"
uuid = 11

callbody = '{"filename":"{}","size":{},"mimeType":"{}","path":"{}","uuid":{}}'.format(object, size, mimeType, upload_dir, uuid)
print(callbody)

使用百分号格式化

object = "images/TypeObjectClass.jpg"
size = 22862
mimeType = "image/jpeg"
upload_dir = "images"
uuid = 11

callbody = '{"filename":"%s","size":%d,"mimeType":"%s","path":"%s","uuid":%d}' % (object, size, mimeType, upload_dir, uuid)
print(callbody)

以上任何一种方式都可以正确地将变量插入到字符串中,从而避免服务器接收时自定义变量为None的问题。请根据你的Python版本选择合适的方法。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答