为了账号安全,请及时绑定邮箱和手机立即绑定

Forge Reality Capture:指定的照片场景 ID 不存在

Forge Reality Capture:指定的照片场景 ID 不存在

小唯快跑啊 2022-10-25 15:41:46
我正在使用 python 将一些 .jpg 图像上传到我创建的照片场景,但我不断收到这个错误。{'Usage': '0.48637413978577', 'Resource': '/file', 'Error': {'code': '19', 'msg': "Specified Photoscene ID doesn't exist in the database"}}这是我的代码,photoscene 创建效果很好,我得到了 photoscene id 并将其复制为字符串以将其存储为“sceneId”formData = {'Content-Type': 'multipart/form-data', 'Authorization': 'Bearer eyXXXX'}sceneId = "l5w----etc-etc------qQ"# This bit is so I can use tkinter to choose my imagesapplication_window = tk.Tk()application_window.withdraw()answer = filedialog.askopenfilenames(parent=application_window,                                    initialdir=os.getcwd(),                                    title="Please select one or more files:",                                    filetypes=[("Image files", ".jpg .jpeg")])if answer != "":    files = {        "photosceneid":(None, sceneId),        "type":(None, "image")    }    n=-1    for a in answer:        n = n+1        a = a.replace("/", "//")        files["file[{x}]".format(x=n)] = (a, open(a,"rb"))    # This bit adds keys and values to the dictionary as "file[0]": ("path//to//image//", open("path//to//image//","rb"))    r = requests.post("https://developer.api.autodesk.com/photo-to-3d/v1/file",headers=formData,files=files).json()    print(r)我正在关注官方api 参考中的片段curl -v 'https://developer.api.autodesk.com/photo-to-3d/v1/file' \  -X 'POST' \  -H 'Authorization: Bearer eyjhbGCIOIjIuzI1NiISimtpZCI6...' \  -F "photosceneid=hcYJcrnHUsNSPII9glhVe8lRF6lFXs4NHzGqJ3zdWMU" \  -F "type=image" \  -F "file[0]=@c:/sample_data/_MG_9026.jpg" \  -F "file[1]=@c:/sample_data/_MG_9027.jpg"感谢您的阅读和帮助!
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

问题是您将photosceneid数据作为文件发送。在来自官方 api 的 cURL 片段中


curl -v 'https://developer.api.autodesk.com/photo-to-3d/v1/file' \

-X 'POST' \

-H 'Authorization: Bearer eyjhbGCIOIjIuzI1NiISimtpZCI6...' \

-F "photosceneid=hcYJcrnHUsNSPII9glhVe8lRF6lFXs4NHzGqJ3zdWMU" \

...

-F标志表示形式(在 cURL 的情况下),这不是文件所必需的。


因此,您必须将photosceneid和类型作为数据而不是文件发送:


from requests_toolbelt import MultipartEncoder

import requests


url = "https://developer.api.autodesk.com/photo-to-3d/v1/file"


payload = MultipartEncoder(

   fields={'photosceneid': MY_PHOTOSCENE,

           'type': 'image',

           'file[0]': ("DSC_5428.JPG", open('./DSC_5428.JPG', 'rb'), 'image/jpg')

        }

  )



headers = {

 'Content-Type': payload.content_type,

 'Authorization': TOKEN

}



req = requests.request("POST",

                      url,

                      headers=headers,

                      data=payload

                     )


查看完整回答
反对 回复 2022-10-25
?
不负相思意

TA贡献1777条经验 获得超10个赞

作为记录,我们的后端存在一个问题,会导致重复的场景 ID ...


我们的工程部门正在积极解决这个问题——暂时作为一种解决方法,如果您再次遇到类似问题,请创建另一个场景......


而且您在上传文件的请求中使用的场景 ID 不正确......事实上,这是来自我们这里的示例

如果您按照此处的文档创建场景,您应该能够在响应中获得场景 ID,如下所示:


{

  "Photoscene": {

    "photosceneid": "hcYJcrnHUsNSPII9glhVe8lRF6lFXs4NHzGqJ3zdWMU"

  }

}

并且一定要在你以后的请求中引用这个....


查看完整回答
反对 回复 2022-10-25
  • 2 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信