Forge Reality Capture:指定的照片场景 ID 不存在
Forge Reality Capture: Specified photoscene ID doesn't exist
我正在使用 python 将一些 .jpg 图像上传到我创建的照片场景中,但我经常遇到此错误。
{'Usage': '0.48637413978577', 'Resource': '/file', 'Error': {'code': '19', 'msg': "Specified Photoscene ID doesn't exist in the database"}}
这是我的代码,照片场景创建效果很好,我获取照片场景 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 images
application_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 reference
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"
感谢阅读和帮助!
问题是您将 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 和 type 作为数据,而不是文件:
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
)
郑重声明,我们的后端存在问题,会导致场景 ID 重复...
我们的工程人员正在积极解决此问题 - 如果您再次 运行 再次遇到类似问题,请暂时作为解决方法创建另一个场景 ...
并且您在上传文件请求中使用的场景 ID 不正确...实际上那来自我们的示例 here
如果您按照文档 here 创建了一个场景,您应该能够在响应中获得一个场景 ID,如下所示:
{
"Photoscene": {
"photosceneid": "hcYJcrnHUsNSPII9glhVe8lRF6lFXs4NHzGqJ3zdWMU"
}
}
请务必在您以后的请求中提及此内容....
我正在使用 python 将一些 .jpg 图像上传到我创建的照片场景中,但我经常遇到此错误。
{'Usage': '0.48637413978577', 'Resource': '/file', 'Error': {'code': '19', 'msg': "Specified Photoscene ID doesn't exist in the database"}}
这是我的代码,照片场景创建效果很好,我获取照片场景 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 images
application_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 reference
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"
感谢阅读和帮助!
问题是您将 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 和 type 作为数据,而不是文件:
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
)
郑重声明,我们的后端存在问题,会导致场景 ID 重复...
我们的工程人员正在积极解决此问题 - 如果您再次 运行 再次遇到类似问题,请暂时作为解决方法创建另一个场景 ...
并且您在上传文件请求中使用的场景 ID 不正确...实际上那来自我们的示例 here
如果您按照文档 here 创建了一个场景,您应该能够在响应中获得一个场景 ID,如下所示:
{
"Photoscene": {
"photosceneid": "hcYJcrnHUsNSPII9glhVe8lRF6lFXs4NHzGqJ3zdWMU"
}
}
请务必在您以后的请求中提及此内容....