Pull to refresh
9
Изя@Aspire89

Пользователь

6
Subscribers
Send message
Добавил Content-Disposition
import json
import base64
import urllib.request

def handler(event, context):
    img  = urllib.request.urlopen("https://habr.com/images/habr.png").read()

    parsed_string = json.loads(event["body"])
    chat_id = parsed_string['message']['chat']['id']

    boundary = 'Asrf456BGe4h'
    parts = []
    parts.append('--' + boundary)
    parts.append('Content-Disposition: form-data; name="method"')
    parts.append('')
    parts.append('sendPhoto')
    parts.append('--' + boundary)
    parts.append('Content-Disposition: form-data; name="chat_id"')
    parts.append('')
    parts.append(str(chat_id))
    parts.append('--' + boundary)
    parts.append('Content-Disposition: form-data; name="photo"; filename="%s"' % 'img.jpg')
    parts.append('Content-Type: image/jpeg')
    parts.append('')
    parts.append(base64.b64encode(img).decode())
    parts.append('--' + boundary + '--')
    parts.append('')

    body = '\r\n'.join(parts)

    return {
        'statusCode': 200,
        'headers': {
            'content-type': 'multipart/form-data; boundary=' + boundary
        },
        'body': body,
        'isBased64Encoded': 'true'
    }

И добился формирования следующего ответа, но не понимаю, что из этого не нравится телеграму:
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 06 Oct 2019 14:26:32 GMT
Content-Type: multipart/form-data; boundary=Asrf456BGe4h
Transfer-Encoding: chunked
Connection: keep-alive
X-Content-Type-Options: nosniff
X-Function-Id: ...
X-Function-Version-Id: ...
X-Request-Id: ...
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Frame-Options: SAMEORIGIN

--Asrf456BGe4h
Content-Disposition: form-data; name="method"

sendPhoto
--Asrf456BGe4h
Content-Disposition: form-data; name="chat_id"

1111111
--Asrf456BGe4h
Content-Disposition: form-data; name="photo"; filename="img.jpg"
Content-Type: image/jpeg

iVBORw0KGgoAAAANSUhEUgAABLAAAAJ2CAYAAABPQHtcAAAABGdBTUEAALGPC/
.../A0wmf2FFW4KcAAAAAElFTkSuQmCC
--Asrf456BGe4h--
А подскажите как отправить «multipart/form-data», хочу отправить sendPhoto, но ничего не выходит
import json
import base64
import urllib.request

def handler(event, context):
    img  = urllib.request.urlopen("https://habr.com/images/habr.png").read()

    parsed_string = json.loads(event["body"])
    chat_id = parsed_string['message']['chat']['id']

    answerM = {
        "method": "sendMessage",
        "chat_id": chat_id,
        "text": "привет"
    }

    answerP = {
        "method": "sendPhoto",
        "chat_id": chat_id
        #"photo": base64.b64encode(img).decode()
    }

    return {
        'statusCode': 200,
        'headers': {"Content-Type": "multipart/form-data"},
        'body': json.dumps(answerP),
        'isBased64Encoded': 'true',
        'files': {'photo': base64.b64encode(img).decode()}
    }
Все намного проще https://www.flightradar24.com/share-your-data
А серия Gold для применения в каких устройствах?
Давайте напишем Герману Оскаровичу письмо, пусть своим специалистам по голове настучит.
А ваше приложение умеет строить сложные маршруты с пересадкой?
Как раз ищу рюкзак. Остановился на Columbia Input 20L Daypack. Есть у кого нибудь опыт использования?
Вместо GitLab я бы посоветовал посмотреть на Gogs
замедлившуюся на своей полосе машину, это мог быть тот же грузовик стоящий в пробке
А есть библиотека для подключения к Raspberry Pi?
дороговато будет, а для мониторинга параметров в квартире подойдут и более дешевые аналоги
интересует цена таких датчиков
>winrar
на дворе был 2016 год
а почему вместо ракет не используют самолёты? невозможно поднять на такую высоту или дороже стоит?
когда завтра издадут закон о импортозамещении, то будет осмысленно
тоже первая моя видеокарта

Information

Rating
Does not participate
Date of birth
Registered
Activity