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

Azure Media Service资产文件下载问题求助(HTTParty Gem)

嗨,我来帮你解决这个问题!你现在遇到的情况是因为调用的API端点本身就是返回资产文件元数据的,不是直接提供文件下载的入口。要拿到实际的文件内容,你需要先获取该文件的SAS下载链接,再通过这个链接去下载文件。

具体步骤如下:

  1. 获取带SAS令牌的下载链接
    你需要在原来的GET请求里添加?includeDownloadUrl=true参数,这样API返回的元数据中会包含一个downloadUrl字段,这个就是可以直接用来下载文件的带权限的URL。

    对应的Ruby代码示例:

    # 发起请求获取包含下载链接的文件元数据
    metadata_response = HTTParty.get(
      "https://<host>.restv2.<location>.media.azure.net/api/Files('<file_id>')?includeDownloadUrl=true",
      headers: headers # 这里用你原来的授权头
    )
    
    # 从返回结果中提取下载链接
    download_url = metadata_response.parsed_response['downloadUrl']
    
  2. 通过SAS链接下载文件
    拿到downloadUrl之后,直接用这个URL发起GET请求即可,不需要再携带原来的授权头(因为SAS链接已经包含了访问所需的权限和令牌信息),然后把返回的二进制内容保存到本地文件。

    代码示例:

    # 下载文件内容
    file_content = HTTParty.get(download_url).body
    
    # 将内容写入本地文件(替换成你想要的文件名和路径)
    File.open('my_downloaded_file.mp4', 'wb') do |file|
      file.write(file_content)
    end
    

额外注意点:

  • 确保你的授权头拥有足够的权限(至少需要Read权限)来获取这个SAS下载链接
  • 如果返回的元数据里没有downloadUrl,可以检查一下资产的配置,确认该资产文件允许生成下载链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:04:08