使用Azure存储JavaScript客户端库为浏览器创建共享访问签名时出错

时间:2018-02-19 14:48:25

标签: javascript azure azure-storage

我需要在客户端应用程序中创建blob部分,这将使最终用户能够将图像上载到Azure存储帐户。

我创建了一个容器“test”,其容器级别权限跟随以下链接:

New Azure Storage JavaScript client library for browsers - Preview

我创建了一个简单的HTML页面,并按指定的顺序包含了Azure库。这是代码:

<html>
<head>

<title>Media Upload</title>
<script src="azure-storage.common.js"></script/>
<script src="azure-storage.blob.js"></script/>

</head>
<body style="word-wrap: break-word;">

<input type="text" id="text" name="text" value="Hello World!" />
<button id="upload-button" onclick="uploadBlobFromText()">Upload</button>


<script>
function uploadBlobFromText() {
     // your account and SAS information
     var sasKey ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
     var blobUri = "https://XXXXXXXXX.blob.core.windows.net"; //tried with http as well.
     var blobService = AzureStorage.createBlobServiceWithSas(blobUri, sasKey).withFilter(new AzureStorage.ExponentialRetryPolicyFilter());
     alert("service ready");    
         var text = document.getElementById('text');
         var btn = document.getElementById("upload-button");
         blobService.createBlockBlobFromText('test', 'myblob', text.value,  function(error, result, response){
             if (error) {
                 alert('Upload failed, open browser console for more detailed info.');
                 console.log(error);
             } else {
                 alert('Upload successfully!');
             }
         });
    }
}
</script>
</body>
</html>

我收到以下错误:

Status code: 404, description: 'The specified resource does not exist

不确定为什么会失败,有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您应该在代码中实现 CORS

  

在没有CORS的情况下,使用Windows Azure存储服务的网站需要充当存储呼叫的代理。

     

针对Blob的CORS的典型用法是允许针对Windows Azure存储帐户上载直接Web浏览器文件。在这种情况下,用户可以使用CORS和SAS(共享访问签名)身份验证机制,以便为您的存储帐户授予Web浏览器写入权限。

将Blob上传到Windows Azure存储的示例JavaScript代码

以下示例是一个代码段,允许您使用JavaScript将文件直接从Web浏览器上传到Windows Azure存储。完整代码可在此处获得。下面的代码是UploadImage.cshtml文件的一个片段。

InterruptedException

可以找到更多信息here