Azure Media Service资产文件下载问题求助(HTTParty Gem)
嗨,我来帮你解决这个问题!你现在遇到的情况是因为调用的API端点本身就是返回资产文件元数据的,不是直接提供文件下载的入口。要拿到实际的文件内容,你需要先获取该文件的SAS下载链接,再通过这个链接去下载文件。
具体步骤如下:
获取带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']通过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
相关产品推荐
相关产品推荐

