1

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

4

2 回答 2

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.');
});
于 2012-10-08T20:10:51.780 回答
0

您可以从客户端上传,而无需使用 JavaScript 接触 MVC 站点,我写了一篇博客文章,其中包含有关如何执行此操作的示例 http://blog.dynabyte.se/2013/10/09/uploading-directly-to- windows-azure-blob-storage-from-javascript/代码位于 GitHub

它基于Gaurav Mantris 帖子,通过在 Blob 存储本身上托管 JavaScript 来工作。

于 2013-10-16T09:38:37.773 回答