+
+
+
+
+ WebDAV 同步
+
+
同步画布、我的素材、生成记录和本地媒体文件,不包含 AI API Key;服务不支持 CORS 时可走 Next.js 转发。
+
+
{webdav.lastSyncedAt ? `上次同步 ${formatWebdavTime(webdav.lastSyncedAt)}` : "尚未同步"}
+
+
+
+ updateWebdavConfig("proxyMode", value as typeof webdav.proxyMode)}
+ options={[
+ { label: "前端直连", value: "direct" },
+ { label: "Next.js 转发", value: "nextjs" },
+ ]}
+ />
+
+
+ updateWebdavConfig("url", event.target.value)} />
+
+
+ updateWebdavConfig("directory", event.target.value)} />
+
+
+ updateWebdavConfig("username", event.target.value)} />
+
+
+ updateWebdavConfig("password", event.target.value)} />
+
+
+
+ } disabled={!webdavReady || syncingWebdav} loading={testingWebdav} onClick={() => void testWebdav()}>
+ 测试连接
+
+ } disabled={!webdavReady || testingWebdav} loading={syncingWebdav} onClick={() => void syncWebdav()}>
+ {syncingWebdav ? "同步中" : "立即同步"}
+
+ {webdavSyncStatus ? {webdavSyncStatus} : null}
+
+ {syncingWebdav || webdavSyncStatus ? (
+
+ {webdavDomainKeys.map((key) => {
+ const item = webdavDomainProgress[key];
+ const count = item.total ? `${item.current || 0}/${item.total}` : "";
+ return (
+
+
+ {item.label}
+
+ {item.stage}
+ {count ? ` · ${count}` : ""}
+
+
+
+
+ );
+ })}
+
+ ) : null}
+