我正在开发一个Web项目,用户需要一个专用的“工作区”来上传和查看特定于他们的图像。我目前的想法是,我会利用Azure Blob存储:
1)点击(可能在填写表格后),用户可以获得他们自己的blob容器,他们可以上传和查看他们上传的文件
2)用户将无法查看其他人的blob容器(SAS)
3)用户可以通过引用与其用户名绑定的Blob容器(稍后使用Azure移动服务来存储对用户名和他们拥有的blob的引用)来稍后登录并“在他们停止的地方”“
我有一个很难要求通过JavaScript实现这一点(我正在使用AngularJS应用程序)并将node.js作为选项包含。
我的问题如下:
1)Azure Blob存储是否适用于此类场景?
2)如何通过JavaScript以编程方式创建容器?
3)使用JavaScript(jQuery等)上传文件的首选方法是什么?我已经启用了CORS并将一个示例blob设置为Public进行测试,但仍然会收到带有PUT请求的Cross Origin错误。我需要带有公共blob的SAS吗?
4)除了PUT之外还有什么我需要覆盖现有的图像吗?
5)最重要的是:鉴于用户希望在短时间内查看上传的图像,社区是否会推荐他们的替代架构或解决方案
答案 0 :(得分:1)
1)Azure Blob存储是否适用于诸如此类方案的正确解决方案 此?
为了在Azure中存储图像,Blob存储是最佳选择。
2)如何通过JavaScript以编程方式创建容器?
从技术上讲,您可以使用REST API通过JavaScript创建容器,但不建议这样做,因为只有帐户所有者才能立即创建容器(或者换句话说,需要帐户密钥才能创建容器)。你可以做的是当用户注册时在服务器端脚本中创建一个容器。
3)使用JavaScript(jQuery等)的首选方法是什么 上传文件?我已经启用了CORS并将样本blob设置为 公开测试,但仍然得到一个Cross Origin错误 PUT请求。我需要带有公共blob的SAS吗?
您可以使用jQuery或Angular(取决于您的舒适程度)。我写了一篇关于使用jQuery上传blob的博客文章,你可以在这里阅读:http://gauravmantri.com/2013/12/01/windows-azure-storage-and-cors-lets-have-some-fun/。我无法找到它,但我记得有人在Angular中写过同样的内容。
关于CORS错误(我也看到了您的其他问题),请尝试将允许的来源设置为"*"
。出于某种原因,将原点设置为"localhost:someport"
效果不佳。
您不需要SAS来阅读(下载)公共blob。但是,您需要SAS来执行上传和更改blob属性等操作。
4)除了PUT还有什么我需要覆盖一个 现有形象?
我不这么认为。我建议您阅读blob存储REST API,以便在请求中传递正确的标题。
5)最重要的是:他们的替代架构或解决方案 鉴于用户希望查看他们的内容,社区会建议 短期上传图片
就个人而言,这种架构对我来说很好。事实上,我在我的应用程序中大量使用它。但我也有兴趣听取其他人的想法。