diff --git a/src/platform/assets/composables/useMediaAssetActions.ts b/src/platform/assets/composables/useMediaAssetActions.ts index b5b06ece3..c4e3b79a4 100644 --- a/src/platform/assets/composables/useMediaAssetActions.ts +++ b/src/platform/assets/composables/useMediaAssetActions.ts @@ -65,15 +65,8 @@ export function useMediaAssetActions() { try { const filename = targetAsset.name - let downloadUrl: string - - // In cloud, use preview_url directly (from cloud storage) - // In OSS/localhost, use the /view endpoint - if (isCloud && targetAsset.preview_url) { - downloadUrl = targetAsset.preview_url - } else { - downloadUrl = getAssetUrl(targetAsset) - } + // Prefer preview_url (already includes subfolder) with getAssetUrl as fallback + const downloadUrl = targetAsset.preview_url || getAssetUrl(targetAsset) downloadFile(downloadUrl, filename) @@ -103,15 +96,8 @@ export function useMediaAssetActions() { try { assets.forEach((asset) => { const filename = asset.name - let downloadUrl: string - - // In cloud, use preview_url directly (from GCS or other cloud storage) - // In OSS/localhost, use the /view endpoint - if (isCloud && asset.preview_url) { - downloadUrl = asset.preview_url - } else { - downloadUrl = getAssetUrl(asset) - } + // Prefer preview_url (already includes subfolder) with getAssetUrl as fallback + const downloadUrl = asset.preview_url || getAssetUrl(asset) downloadFile(downloadUrl, filename) }) diff --git a/src/platform/assets/utils/assetUrlUtil.ts b/src/platform/assets/utils/assetUrlUtil.ts index 60956eb5f..ad0c2be25 100644 --- a/src/platform/assets/utils/assetUrlUtil.ts +++ b/src/platform/assets/utils/assetUrlUtil.ts @@ -8,7 +8,7 @@ import { getAssetType } from './assetTypeUtil' /** * Get the download/view URL for an asset - * Constructs the proper URL with filename encoding and type parameter + * Constructs the proper URL with filename encoding, type, and subfolder parameters * * @param asset The asset to get URL for * @param defaultType Default type if asset doesn't have tags (default: 'output') @@ -23,7 +23,12 @@ export function getAssetUrl( defaultType: 'input' | 'output' = 'output' ): string { const assetType = getAssetType(asset, defaultType) - return api.apiURL( - `/view?filename=${encodeURIComponent(asset.name)}&type=${assetType}` - ) + const subfolder = asset.user_metadata?.subfolder + const params = new URLSearchParams() + params.set('filename', asset.name) + params.set('type', assetType) + if (typeof subfolder === 'string' && subfolder) { + params.set('subfolder', subfolder) + } + return api.apiURL(`/view?${params}`) }