Cloud Video Upload Issues...
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
使用 templates/api_seedance2_0_r2v.json、comfy upload --where cloud 和 comfy run 重现该故障,然后将上传的文件与 LoadVideo enum 进行比较。阅读 app/assets/services/path_utils.py、app/assets/services/ingest.py 以及所引用的 server.py 上传处理逻辑;完成的标准是公共上传路径注册一个视频,使 workflow 通过 validation。
由索引模型根据 Issue 内容生成。
描述
Comfy Cloud: LoadVideo widget enum can't see files uploaded via /upload/image (or comfy upload CLI)
Summary
Third-party apps that submit workflows to Comfy Cloud can upload images for LoadImage-referenced widgets using the documented POST /api/upload/image endpoint (or comfy upload --where cloud), and everything works — the uploaded filename shows up as a valid enum option for LoadImage widgets and the workflow runs.
The same endpoint accepts video files (per the docs and comfyanonymous/ComfyUI server.py:image_upload()), returns a {name, subfolder, type} envelope, but the uploaded filename never appears in LoadVideo's enum — so any workflow that references a user-uploaded video via LoadVideo fails validation with:
{"code": "workflow_unknown_nodes",
"message": "Workflow has 1 validation error(s) against cloud",
"hint": "node <id>: '<subfolder>/<hash>.mp4' not in 1 known options for file
(did you mean: bedroom.mp4?)"}
bedroom.mp4 is a video previously uploaded via the Cloud web UI's LoadVideo "choose file to upload" button, which registers the file with a different (proprietary) asset service. That service's contents populate the enum.
This makes any video-conditioned partner workflow (Seedance 2.0 Reference-to-Video, Depth Anything 3 Video, Kling motion-control, etc.) unreachable from third-party clients using the public CLI/HTTP surface.
Repro
- Fetch canonical R2V template:
templates/api_seedance2_0_r2v.jsonfromComfy-Org/workflow_templates - Inject a
LoadVideonode wired toByteDance2ReferenceNode.video_1(input slot 2, socket typeVIDEO) - Upload a
.mp4(any valid one — 720p, mp4/h264, 5s, 30fps) viacomfy upload <path> --where cloud - Patch the injected
LoadVideo'sfilewidget with the returnedcloud_name - Submit via
comfy run --where cloud --workflow <patched.json>
Expected: workflow runs, uses uploaded video as video_1 reference.
Actual: validation fails with unknown_enum_value for the file field.
Same repro with the direct multipart POST /api/upload/image (all four form fields: image, type=input, overwrite=true, and subfolder=video) fails identically.
What was tried
| Attempt | Result |
|---|---|
comfy upload --where cloud (returns cloud_name) |
file uploads, LoadVideo enum unchanged |
Direct POST /api/upload/image with subfolder="video" |
file lands at video/<hash>.mp4, LoadVideo enum unchanged |
Widget value with subfolder prefix (video/<hash>.mp4) |
same enum error |
Any of the other _KNOWN_SUBFOLDER_TAGS from app/assets/services/path_utils.py:9 (3d, pasted, painter, threed, webcam) |
none tag files as video |
type="video" on the upload form |
server coerces to input (per server.py:get_dir_by_type) |
Root cause (as best I can tell from OSS source)
Cloud's LoadVideo.file widget enum is not populated from ComfyUI's own folder_paths scan of input/. It's populated from a proprietary asset catalog that only receives entries via:
- The Cloud web UI's per-widget "choose file to upload" button (unknown endpoint)
- Explicit partner-nodes like
ByteDanceCreateVideoAsset(which internally callsupload_video_to_comfyapi→POST /customers/storage→ an SDK-scoped signed-URL PUT → thenPOST /proxy/seedance/assets)
Neither path is reachable from comfy CLI or POST /api/upload/image.
Suggested fixes
Any one of these would unblock third-party integrations:
comfy upload --kind video(or--type=video) flag — take a hint from the client, tag the asset appropriately in Cloud's catalog soLoadVideo's enum picks it up.- Expose the Cloud web UI's per-widget upload endpoint publicly (whatever it is), and document it alongside
POST /api/upload/image. Point third-party clients at it. - A
LoadVideoFromUrlcore node analogous toLoadImagebut that fetches a signed URL at runtime — combined with the already-publicPOST /customers/storagethis would give clients a full upload path without needing enum registration. - Automatic mime-type-based tagging in the ingest pipeline (
app/assets/services/ingest.py): if the uploaded file's mime_type starts withvideo/, add avideotag so the LoadVideo enum picks it up. This would make the existingPOST /api/upload/imagework uniformly across media types.
Workarounds attempted
- Extract first frame → use as
image_1. Works, loses motion signal but Seedance runs. - Full
CreateVideochain (extract N frames → NLoadImagenodes → batch →CreateVideo→ByteDanceCreateVideoAsset→asset_1): mechanically possible but requires ~150 injected LoadImage nodes for 5s@30fps and a first-time H5 verification step forCreateVideoAsset'sgroup_id. Not viable as a background/programmatic path.
Environment
comfy-cli(whatever ships in a recent Comfy Desktop bundle)- Cloud
ByteDance2ReferenceNode(comfy_api_nodes/nodes_bytedance.py:2098) - Third-party app in Python, POSTing multipart form to
<cloud_base>/api/upload/image
Impact
Blocks any third-party editor / pipeline that wants to feed user-recorded or programmatically-generated video into a video-conditioned Cloud partner node. Currently the only way for our users to run Seedance 2.0 R2V with their own footage is to drag-drop it into the Cloud web UI manually, which defeats the purpose of an app-driven workflow.
- 主要语言
- Python
- 星标
- 1k
- 派生
- 176
- 平均合并
- 1 天 11 小时
- 30 天内合并 PR
- 87
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Comfy-Org/comfy-cli 的其他 Issue
-
test_file_utils umask tests assert against a umask the code never reads (import-time _UMASK), so they only pass on a 0o022 host可能已有人在做 @neverbiasu 于 10 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 86/100
Comfy-Org/comfy-cli#907 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 1/5 1 小时以内 新手友好度 92/100
Comfy-Org/comfy-cli#781 · 1 条评论 ·
维护者通常 1 天内回复
-
`comfy launch --background` fails with FileNotFoundError when comfy-cli is invoked by path可能已有人在做 @RaphaelFakhri 于 42 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 78/100
Comfy-Org/comfy-cli#691 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
Comfy-Org/comfy-cli#670 · 2 条评论 ·
维护者通常 1 天内回复
查看 Comfy-Org/comfy-cli 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"可能已有人在做 @0z5a 今天认领。 未关闭needs-triage
难度 2/5 半天 新手友好度 72/100
维护者通常 2 天内回复
-
plot_graph crashes when a mesh node has no m2m edge可能已有人在做 @tygvi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
mllam/neural-lam#883 · 1 条评论 ·
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
future-agi/future-agi#4092 · 1 条评论 ·
维护者通常 1 天内回复
-
transcript analytics: a text whose only protected spans the prose pass redacts is withheld whole未关闭
难度 1/5 1 小时以内 新手友好度 82/100
WingedGuardian/GENesis-AGI#4641 ·
维护者通常 1 天内回复