【问题标题】:How to upload media file in the blob storage of Azure Media Services using Rest API如何使用 Rest API 在 Azure 媒体服务的 blob 存储中上传媒体文件
【发布时间】:2023-03-17 08:10:02
【问题描述】:

我正在使用 javascript (angular js) 访问 Azure Media Rest API,我遵循了 Microsoft 文档 (https://docs.microsoft.com/en-us/azure/media-services/media-services-rest-get-started),通过它我能够生成令牌、连接到媒体服务、创建访问令牌和定位器。但是在这一步之后,我在将文件上传到 blob 存储容器时遇到了问题。 有没有办法使用Angular js或javascript通过客户端上传文件?

在提出请求时:- PUT https://storageaccountname.blob.core.windows.net/assetcontainer/filename?sas token HTTP/1.1 主机: storageaccount.blob.core.windows.net 连接:保持活动 内容长度:223 x-ms-blob 类型:BlockBlob 来源:http://localhost 授权:SharedKey accountnamw:访问密钥 内容类型:视频/mp4 接受:应用程序/json, x-ms-版本:2011-08-18

这给出了响应:- HTTP/1.1 400 身份验证信息的格式不正确。检查 Authorization 标头的值。 内容长度:297 内容类型:应用程序/xml x-ms-request-id:e6b8eeaa-0001-003e-4403-6958b9000000 访问控制允许来源:本地主机 访问控制允许凭据:true 日期:2017 年 1 月 7 日星期六 16:34:38 GMT

在尝试从请求中删除授权标头和日期标头时,我们收到的响应是 404 错误:资源不存在。我正在寻找将文件上传到 blob 存储容器的适当解决方案,请帮助我解决此问题。

谢谢你..

【问题讨论】:

    标签: javascript angularjs azure azure-blob-storage azure-media-services


    【解决方案1】:

    由于上传不是由媒体服务 API 本身处理的,因此您需要查找使用 Azure 存储 API 通过 SAS URL 上传到块 Blob 的示例。

    由于您已经有一个可写的定位器(SAS URL),您现在需要写入块 blob。

    我在网络上看到了一些从客户端 Angular 代码执行此操作的示例。例如 - https://blogs.msdn.microsoft.com/kaevans/2015/12/18/securely-upload-to-azure-storage-with-angular/

    我会看看有没有更多的例子

    【讨论】:

    • 在发出如下请求时:-
    • PUT storageaccountname.blob.core.windows.net/asset/... HTTP/1.1 主机:storageaccountname.blob.core.windows.net,连接:keep-alive,x-ms-blob-type : BlockBlob, 授权: SharedKey myaccount: "key" ,Content-Type: video/mp4, Accept: application/json, x-ms-version: 2011-08-18 x-ms-date: Sat, 07 Jan 2017 16:格林威治标准时间 07:36
    • 响应:HTTP/1.1 400 身份验证信息的格式不正确。检查 Authorization 标头的值。内容长度:297 内容类型:应用程序/xml 服务器:Microsoft-HTTPAPI/2.0 x-ms-request-id:-------- Access-Control-Allow-Origin:localhost Access-Control-Allow-凭据:真实日期:2017 年 1 月 7 日星期六 16:34:38 GMT
    • 而当我们从请求中去掉Authorization header, date header时,我们收到的响应是404:指定的资源不存在。你能指导我走出这个问题的方法吗?
    • 嗨,@MohitNautiyal,根据您的评论时间线,您的问题终于解决了吗?如果您仍有任何疑问,请告诉我。
    【解决方案2】:

    目前,客户端使用的 JavaScript 没有现有的 Azure 存储 SDK。因此,我们可以手动生成 SAS 令牌 URL,以便从客户端应用程序上传 Blob。

    详细指导可以参考https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-1

    另外,您可以参考这个帖子Authorization of Azure Storage service REST API,因为我们之前讨论了如何在客户端的 javascript 中生成 SAS 令牌。

    【讨论】:

    • 这个问题需要付出很多努力才能解决,但我们仍然一次又一次地面临一些或其他问题。
    • PUT storageaccountname.blob.core.windows.net/asset/… HTTP/1.1 主机:storageaccountname.blob.core.windows.net 连接:keep-alive x-ms-blob-type:BlockBlob 授权:SharedKey myaccount:“key” Content-类型:video/mp4 接受:application/json,x-ms-version:2011-08-18 x-ms-date:星期六,2017 年 1 月 7 日 16:07:36 GMT....
    • 响应:HTTP/1.1 400 身份验证信息的格式不正确。检查 Authorization 标头的值。内容长度:297 内容类型:应用程序/xml 服务器:Microsoft-HTTPAPI/2.0 x-ms-request-id:-------- Access-Control-Allow-Origin:localhost Access-Control-Allow-凭据:真实日期:2017 年 1 月 7 日星期六 16:34:38 GMT
    • 而当我们从请求中去掉Authorization header, date header时,我们收到的响应是404:指定的资源不存在。你能指导我走出这个问题的方法吗
    猜你喜欢
    • 2015-05-20
    • 2015-12-14
    • 1970-01-01
    • 2018-11-10
    • 2015-08-13
    • 2018-10-29
    • 2015-11-18
    • 1970-01-01
    • 2015-04-26
    相关资源
    最近更新 更多