def upload_photo(api, multipart_data, peer_id=None):
""" Upload photo file `multipart_data` and return Attachment for sending to
user with id `peer_id`(optional but recommended)
"""
sender = api.get_default_sender('photos.getMessagesUploadServer')
data = aiohttp.FormData()
data.add_field('photo', multipart_data, filename='picture.png', content_type='multipart/form-data')
kwargs = {}
if peer_id:
kwargs["peer_id"] = peer_id
response = await api(sender=sender).photos.getMessagesUploadServer(**kwargs)
if not response or not response.get('upload_url'):
return None
upload_url = response['upload_url']
async with aiohttp.ClientSession() as sess:
async with sess.post(upload_url, data=data) as resp:
result = json.loads(await resp.text())
if not result:
return None
data = {'photo': result['photo'], 'hash': result['hash'], 'server': result['server']}
result = await api(sender=sender).photos.saveMessagesPhoto(**data)
if not result:
return None
return Attachment.from_upload_result(result[0])
评论列表
文章目录