我需要在客户端应用程序中创建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
不确定为什么会失败,有人可以帮忙吗?
感谢。
答案 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