Проблема с загрузкой объекта Back4app

#python #python-requests #parse-server #back4app

#python #python-запросы #сервер синтаксического анализа #back4app

Вопрос:

Я пытаюсь создать объект с помощью back4app класса for sound

проблема, с которой я сталкиваюсь, заключается в том, что я не могу загрузить файл.

используемый код:

 import requests

headers = {
    "X-Parse-Application-Id": "hidden",
    "X-Parse-REST-API-Key": "hidden",
}


data = {
    "audio": {
        "__type": open("a.mp3", 'rb'),
        "name": "a.mp3"

    },
    "displayText": "test"
}


def main(url):
    with requests.Session() as req:
        req.headers.update(headers)
        r = req.post(url, data=data)
        print(r.text)


main("https://parseapi.back4app.com/classes/sounds")
  

Вывод:

 {"code":111,"error":"schema mismatch for sounds.audio; expected File but got Array"}
  

введите описание изображения здесь

Ответ №1:

Сначала вам нужно загрузить файл:

 import json,httplib
connection = httplib.HTTPSConnection('parseapi.back4app.com', 443)
connection.connect()
connection.request('POST', '/files/a.mp3', open('a.mp3', 'rb').read(), {
       "X-Parse-Application-Id": "${APPLICATION_ID}",
       "X-Parse-REST-API-Key": "${REST_API_KEY}",
       "Content-Type": "audio/mpeg"
     })
result = json.loads(connection.getresponse().read())
  

Затем создайте объект:

 connection.request('POST', '/classes/sounds', json.dumps({
       "displayText": "test",
       "audio": {
         "name": result["name"],
         "url:": result["url"],
         "__type": "File"
       }
     }), {
       "X-Parse-Application-Id": "${APPLICATION_ID}",
       "X-Parse-REST-API-Key": "${REST_API_KEY}",
       "Content-Type": "application/json"
     })
connection.getresponse().read()
  

Комментарии:

1. Большое вам за это спасибо. я пытался связаться с вами по электронной почте поддержки. мне просто интересно, почему вы еще не поддерживали Python. я просто собирался использовать ParsePy . теперь я понял суть. еще раз спасибо

2. я только что попробовал ваше решение сейчас. проверьте онлайн , но похоже, что это неверно.

3. Не могли бы вы попробовать точно закодированный, который я опубликовал выше? Я только что попробовал, и он работает довольно хорошо. Я использую httplib вместо http.client . http.client также должно работать, но я считаю, что запрос необходимо соответствующим образом изменить.