如何使用javascript从浏览器直接将文本字符串上载到Windows Azure Blob

时间:2012-10-08 19:41:14

标签: javascript api rest azure blob

我想使用浏览器端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示例,但我不清楚如何传递要上传的文本字符串。有人能帮忙吗?提前谢谢。

2 个答案:

答案 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来工作。