我想使用浏览器端 JavaScript 从 Web 浏览器将文本/html 字符串作为 Azure Blob 直接上传到 Azure 存储(无需首先通过 Azure VM/Web 服务器)。根据我的研究,我了解到可以使用 Azure REST API + 共享访问签名从 Silverlight 客户端或通过 MVC 3 View 来实现这一目标。 (这里是使用 SilverLight/MVC3 的控件的链接: http://code.msdn.microsoft.com/silverlight/Silverlight-Azure-Blob-3b773e26#content )。我还找到了一个使用服务器端 javascript 和 Node.JS 进行上传的库 https://github.com/jpgarcia/waz-storage-js .
我的问题是,如何仅使用浏览器端 javascript、html 和 SAS(不使用 Silverlight 或 MVC)将文本字符串上传到 Azure blob,并直接将其上传到 Azure,而不通过 Web 服务器?如何将字符串值传递给 Azure Rest API 调用(它会接受 JSON 字符串吗?)?我查看了 MSDN REST api 示例,但我不清楚如何传递要上传的文本字符串。有人能帮忙吗?提前致谢。
最佳答案
我认为这是不可能的。除非网页是从同一个 Blob 存储域托管的,否则这将是跨域调用,这是不允许的(除非设置了 CORS header ,但它们不适用于 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.');
});
关于javascript - 如何使用 javascript 将文本字符串从浏览器直接上传到 Windows Azure Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788350/