You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合Wix Velo Http函数与Media Manager实现含图片的数据迁移

解决方案:结合Wix HTTP Functions与Media Manager获取带图片下载链接的产品数据

以下是修改后的完整代码,实现了在返回产品数据的同时,为每个产品的图片生成临时下载链接:

import { ok, notFound, serverError } from "wix-http-functions";
import wixData from "wix-data";
import { mediaManager } from "wix-media-backend"; // 新增媒体模块导入

export function get_shoesListing(request) {
    const options = {
        headers: {
            "Content-Type": "application/json"
        }
    };

    return wixData.query("Stores/Products")
        .find()
        .then(async (results) => {
            if (results.items.length === 0) {
                return notFound(options);
            }

            // 为每个产品生成图片下载链接
            const productsWithDownloadLinks = await Promise.all(
                results.items.map(async (product) => {
                    // 收集当前产品的所有媒体ID(主图+多图)
                    const mediaIds = [];
                    // 处理主图
                    if (product.mainMedia?.id) {
                        mediaIds.push(product.mainMedia.id);
                    }
                    // 处理多图数组
                    if (product.media && Array.isArray(product.media)) {
                        product.media.forEach(media => {
                            if (media.id) mediaIds.push(media.id);
                        });
                    }

                    // 生成临时下载链接
                    let imageDownloadLinks = [];
                    if (mediaIds.length > 0) {
                        try {
                            const downloadResults = await mediaManager.downloadFiles(mediaIds);
                            // 整理下载链接,匹配媒体ID与对应链接
                            imageDownloadLinks = mediaIds.map(id => {
                                const item = downloadResults.items.find(item => item.fileId === id);
                                return item ? item.url : null;
                            });
                        } catch (mediaError) {
                            console.error("生成图片链接失败:", mediaError);
                            imageDownloadLinks = mediaIds.map(() => null); // 出错时返回null标记
                        }
                    }

                    // 返回附加了图片链接的产品数据
                    return {
                        ...product,
                        imageDownloadLinks: imageDownloadLinks, // 新增图片下载链接字段
                        // 可选:单独提取主图链接
                        mainImageDownloadLink: imageDownloadLinks[0] || null
                    };
                })
            );

            options.body = {
                items: productsWithDownloadLinks
            };
            return ok(options);
        })
        .catch((error) => {
            options.body = {
                error: error.message
            };
            return serverError(options);
        });
}

关键实现细节

  • 媒体模块导入:必须导入wix-media-backend的mediaManager对象,才能调用downloadFiles方法。
  • 媒体ID收集:从产品的mainMedia(主图)和media(多图数组)字段中提取媒体ID,这些ID是调用downloadFiles的必要参数。
  • 异步批量处理:使用Promise.all并行处理所有产品的图片链接生成,避免串行请求导致的性能问题。
  • 临时链接特性:downloadFiles生成的是临时有效的下载链接,符合Wix的安全策略,不会暴露永久的媒体存储地址。
  • 错误容错:单独捕获媒体链接生成的错误,避免单个产品的图片处理失败导致整个API返回错误,同时用null标记出错的图片链接。

使用说明

调用该API后,返回的每个产品对象会新增两个字段:

  • imageDownloadLinks:数组类型,包含当前产品所有图片的临时下载链接,顺序与收集的媒体ID一致。
  • mainImageDownloadLink:字符串类型,单独返回主图的下载链接(可选)。

内容的提问来源于stack exchange,提问作者rungene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:21:04