我想使用浏览器端javascript从Web浏览器将text / html字符串作为Azure blob直接上传到Azure存储(无需首先通过Azure VM / webserver)。根据我的研究,我了解可以使用Azure REST API +共享访问签名从Silverlight客户端或通过MVC 3视图实现此目的。 (这是使用SilverLight / MVC3的控件的链接:http://code.msdn.microsoft.com/silverlight/Silverlight-Azure-Blob-3b773e26#content)。我还找到了一个用于使用Node.JS https://github.com/jpgarcia/waz-storage-js的服务器端javascript上传的库。
我的问题是如何仅使用浏览器端javascript和html以及SAS(不使用Silverlight或MVC)将文本字符串上传到Azure blob,并直接在Azure中直接通过Web服务器执行此操作?如何将字符串值传递给Azure rest api调用(它会接受JSON字符串吗?)?我查看了MSDN REST api示例,但我不清楚如何传递要上传的文本字符串。有人能帮忙吗?提前谢谢。
答案 0 :(得分:1)
我不认为这可以做到。除非网页是从同一个blob存储域托管的,否则这将是跨域调用,这是不允许的(除非设置了CORS标头,它们不适用于blob存储)。
此外,上传到blob需要HTTP PUT请求,我相信大多数浏览器只允许POST和GET。
<强>更新强>
请参阅下面的评论,但看起来某些浏览器确实允许PUT请求。如上所述,可以通过从同一blob存储帐户提供原始页面来消除同源策略。在这种情况下,代码看起来像这样(使用jQuery):
$.ajax({
url: url,
type: 'PUT',
data: 'Hello, World!',
headers: {'Content-Type': 'text/html'}
}).success(function () {
console.log('Saved successfully.');
});
答案 1 :(得分:0)
您可以从客户端上传而无需使用JavaScript触及MVC网站,我已经写了一篇博文,其中有一个如何执行此操作的示例 http://blog.dynabyte.se/2013/10/09/uploading-directly-to-windows-azure-blob-storage-from-javascript/ code is at GitHub
它基于Gaurav Mantris post,并通过在Blob存储本身上托管JavaScript来工作。