You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Back4app创建sound类对象时文件上传失败问题求助

Fixing "schema mismatch for sounds.audio; expected File but got Array" in Back4app

我来帮你搞定这个文件上传的问题,你遇到的错误是因为请求的构造方式不符合Back4app对File类型字段的要求。

错误原因分析

你当前的代码里,把open("a.mp3", 'rb')直接赋值给了audio.__type,这会让requests把文件对象错误地解析成数组类型,导致接口识别到的是Array而不是预期的File。Back4app要求上传File字段时,需要通过multipart/form-data格式提交,同时分开声明字段类型和传递文件内容。

修正后的代码

下面是调整后的正确代码,核心是把文件内容放到files参数中,同时在data里正确声明File类型:

import requests

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

# 这里的__type要设为字符串"File",告诉Back4app字段类型
data = {
    "audio": {
        "__type": "File",
        "name": "a.mp3"
    },
    "displayText": "test"
}

# 用files参数传递实际的文件内容,键名要和data里的audio字段对应
files = {
    "audio": open("a.mp3", 'rb')
}

def main(url):
    with requests.Session() as req:
        req.headers.update(headers)
        # 同时传入data和files,requests会自动处理成multipart/form-data格式
        r = req.post(url, data=data, files=files)
        print(r.text)

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

关键说明

  • data中的audio.__type必须是字符串"File",这是Back4app识别File类型的标识
  • 实际的文件内容要通过files参数传递,键名需要和data中对应的字段名一致(这里是"audio")
  • 使用这种方式提交时,requests会自动设置正确的Content-Type为multipart/form-data,符合Back4app的接口要求

内容的提问来源于stack exchange,提问作者αԋɱҽԃ αмєяιcαη

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:52:38