diff --git a/apps/admin/app/composables/useApi.ts b/apps/admin/app/composables/useApi.ts index bd30239f..6704ccfe 100644 --- a/apps/admin/app/composables/useApi.ts +++ b/apps/admin/app/composables/useApi.ts @@ -99,10 +99,10 @@ export function useApi() { opts: { target?: string; appName?: string; onProgress?: (percent: number) => void } = {}, ): Promise { const contentType = file.type || 'application/octet-stream' - // ⚠️ opts.appName 是页面上选中的应用名,安装包上传必须带: - // X-App-Id 头来自登录态的 currentAppId,只有绑定了应用的运营/代理账号才有; - // 超管在页面顶部选的应用只是个 app_name 字符串,不会进请求头, - // 不带 app_name 的话超管传包必然被后端拒成「必须先选择应用」。 + // opts.appName:安装包是页面上选中的应用;固件/产品图是产品绑定的应用名。 + // 安装包这条:X-App-Id 只有绑定了应用的运营/代理账号才有,超管页面上选的应用 + // 不会进请求头,不带 app_name 就会被拒成「必须先选择应用」。 + // 固件/产品图的目录由服务端按产品 appnames 决定,不看登录态的 X-App-Id。 const token = await webApi<{ upload_url?: string url?: string diff --git a/apps/admin/app/pages/product.vue b/apps/admin/app/pages/product.vue index 71dc7d25..1d406424 100644 --- a/apps/admin/app/pages/product.vue +++ b/apps/admin/app/pages/product.vue @@ -216,6 +216,9 @@
+ @@ -370,6 +373,12 @@
+
+ + +