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

如何通过REST API获取媒体URL及下载媒体文件(Ruby开发)

Ruby 调用REST API操作媒体实例的实现方法

直接用Ruby标准库就能实现两类需求,不需要额外依赖第三方gem,具体写法如下:

直接下载媒体文件到本地

核心是请求时声明接收二进制流,不要用文本编码解析响应,大文件建议用流式写入避免占满内存:

require 'net/http'
require 'uri'

# 替换为实际的媒体实例API地址
media_api_uri = URI("https://你的媒体服务地址/api/v1/media/媒体实例ID")
get_req = Net::HTTP::Get.new(media_api_uri)
# 替换为实际接口要求的鉴权逻辑,支持API Key、Bearer Token等鉴权方式
get_req["Authorization"] = "Bearer 你的接口访问令牌"
# 明确要求服务端返回二进制文件流
get_req["Accept"] = "application/octet-stream"

Net::HTTP.start(media_api_uri.host, media_api_uri.port, use_ssl: media_api_uri.scheme == "https") do |http|
  # 开启自动跟随重定向,适配文件存储在对象存储需要跳转的场景
  http.follow_redirects = true
  http.request(get_req) do |resp|
    raise "接口请求异常,状态码:#{resp.code}" unless resp.is_a?(Net::HTTPSuccess)
    # 按实际媒体类型修改保存的文件名和后缀
    File.open("download_media_file.mp4", "wb") do |local_file|
      resp.read_body { |chunk| local_file.write(chunk) }
    end
  end
end

注意:如果接口返回3xx重定向到对象存储地址,一定要开启自动重定向,不然下载下来的会是重定向响应的文本内容,不是实际文件。

获取媒体访问URL

分两种常见情况处理:

  • 接口返回JSON格式媒体元信息:请求时声明接收JSON,从响应字段里取URL即可,一般字段名是url/access_url/preview_url这类,按实际接口文档调整
  • 接口本身为公开访问模式:拼接完成的媒体实例API地址本身就是可直接访问的URL,不需要额外发起请求
    对应JSON返回场景的示例代码:
require 'net/http'
require 'uri'
require 'json'

media_api_uri = URI("https://你的媒体服务地址/api/v1/media/媒体实例ID")
get_req = Net::HTTP::Get.new(media_api_uri)
get_req["Authorization"] = "Bearer 你的接口访问令牌"
get_req["Accept"] = "application/json"

resp = Net::HTTP.start(media_api_uri.host, media_api_uri.port, use_ssl: media_api_uri.scheme == "https") do |http|
  http.follow_redirects = true
  http.request(get_req)
end

raise "接口请求异常,状态码:#{resp.code}" unless resp.is_a?(Net::HTTPSuccess)
media_metadata = JSON.parse(resp.body)
# 按实际接口返回结构取对应字段
media_access_url = media_metadata["access_url"]
puts "获取到的媒体访问URL:#{media_access_url}"

补充:私有存储的媒体返回的一般是带签名的临时URL,注意有效期,过期后需要重新调用接口生成新的链接。如果平时习惯用httparty、faraday这类HTTP gem,逻辑完全一致,只需要调整对应请求写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:27:15