如何使用Rest API在Azure Media Services的Blob存储中上载媒体文件

时间:2017-01-03 18:59:15

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

我正在使用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-type:BlockBlob 来源:http://localhost 授权:SharedKey accountnamw:访问密钥 内容类型:video / mp4 接受:application / json, x-ms-version:2011-08-18

这给出了回应: - HTTP / 1.1 400身份验证信息的格式不正确。检查授权标头的值。 内容长度:297 Content-Type:application / xml x-ms-request-id:e6b8eeaa-0001-003e-4403-6958b9000000 访问控制允许来源:本地主机 Access-Control-Allow-Credentials:true 日期:星期六,2017年1月7日16:34:38 GMT

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

谢谢..

2 个答案:

答案 0 :(得分:0)

由于上传不是由Media Services API本身处理的内容,因此您需要查找使用Azure Storage API通过SAS URL上传到Block Blob的示例。

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

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

我会检查一下我们是否还有其他例子

答案 1 :(得分:0)

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

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

此外,您可以在我们讨论如何在客户端的javascript中生成SAS令牌时引用此帖子Authorization of Azure Storage service REST API