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

Ruby on Rails从URL获取文件求助:如何通过Amazon Ads API返回链接获取文件

Ruby从Amazon Ads API返回的URL获取文件的方法

方案1:用OpenURI快速实现(适合无特殊认证要求的URL)

OpenURI是Ruby标准库的扩展,用法简洁,适合直接可访问的URL:

require 'open-uri'

# 替换为API返回的实际下载URL
download_url = "https://example-amazon-ads-url.com/file.csv"
# 定义本地保存路径和文件名
local_file_path = "./amazon_ads_report.csv"

# 下载并写入文件
File.open(local_file_path, 'wb') do |file|
  file.write(URI.open(download_url).read)
end

方案2:用Net::HTTP处理带认证的URL(更灵活)

如果Amazon Ads返回的URL需要携带特定请求头(比如认证令牌),Net::HTTP可以更精细地控制请求:

require 'net/http'
require 'uri'

download_url = URI.parse("https://example-amazon-ads-url.com/file.csv")
local_file_path = "./amazon_ads_report.csv"

Net::HTTP.start(download_url.host, download_url.port, use_ssl: download_url.scheme == 'https') do |http|
  request = Net::HTTP::Get.new(download_url)
  
  # 根据Amazon Ads API要求添加认证头,示例:
  # request['Authorization'] = "Bearer YOUR_ACCESS_TOKEN"
  # request['x-amz-access-token'] = "YOUR_AMAZON_ADS_TOKEN"

  response = http.request(request)

  if response.is_a?(Net::HTTPSuccess)
    File.open(local_file_path, 'wb') { |file| file.write(response.body) }
    puts "文件已成功保存到 #{local_file_path}"
  else
    puts "下载失败:#{response.code} #{response.message}"
  end
end

方案3:流式下载大文件(避免内存溢出)

如果要下载的文件体积较大,建议用流式写入的方式分块处理内容:

require 'net/http'
require 'uri'

download_url = URI.parse("https://example-amazon-ads-url.com/large_file.csv")
local_file_path = "./large_amazon_ads_report.csv"

Net::HTTP.start(download_url.host, download_url.port, use_ssl: download_url.scheme == 'https') do |http|
  request = Net::HTTP::Get.new(download_url)
  # 添加必要的认证头

  http.request(request) do |response|
    File.open(local_file_path, 'wb') do |file|
      # 分块读取并写入
      response.read_body do |chunk|
        file.write(chunk)
      end
    end
  end
end

注意事项

  • 确认URL有效期:Amazon Ads返回的下载URL通常有时间限制,需在有效期内执行下载
  • 异常处理:实际使用时建议添加异常捕获(比如rescue OpenURI::HTTPError, Errno::ENOENT等),避免程序崩溃
  • 认证信息:如果URL需要签名或特定令牌,务必按照Amazon Ads API文档要求添加请求头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:20:35