是否可以创建一个html表单,以允许网络用户直接上传文件到azure blob存储而不使用另一台服务器作为中介? S3和GAW blobstore都允许这个,但我无法找到任何支持azure blob存储。直接从浏览器上传文件到Azure Blob存储?
回答
您可以使用HTML5文件API,AJAX和MVC 3建立一个强大的文件上传控件安全可靠地上传大文件到Windows Azure Blob存储与规定的监控操作进度和操作取消。解决方案如下:
- 接受并处理用户上传文件的客户端JavaScript。
- 处理由JavaScript发送的文件块的服务器端代码。
- 调用JavaScript的客户端UI。
获取这里的示例代码:Reliable Uploads to Windows Azure Blob Storage via an HTML5 Control
请看看这些博客文章直接从浏览器上传文件到Blob存储:
http://coderead.wordpress.com/2012/11/21/uploading-files-directly-to-blob-storage-from-the-browser/
的第二篇文章(由我撰写)使用HTML 5 File API,因此不适用于所有浏览器。
基本思想是为blob容器创建Shared Access Signature (SAS)
。 SAS应具有Write
权限。由于Windows Azure Blob存储尚不支持CORS(同时支持Amazon S3和Google),因此您需要将HTML页面托管在您希望用户上传文件的Blob存储中。然后你可以使用jQuery的Ajax功能。
我已经写了blog后对如何做到这一点的例子中,code is at GitHub
它是基于Gaurav Mantris post和托管上的JavaScript Blob存储本身的工作原理。
现在的Windows Azure存储服务支持CORS,你可以做到这一点。你可以在这里看到公告:Windows Azure Storage Release - Introducing CORS, JSON, Minute Metrics, and More。
我有一个简单的例子,说明了这种情况在这里:http://www.contentmaster.com/azure/windows-azure-storage-cors/
的例子显示了如何上传和直接使用jQuery.ajax私人BLOB下载。这个例子还需要一个服务器组件生成共享访问签名:这避免了暴露在客户端代码的存储帐户关键。
有一个New Azure Storage JavaScript client library for browsers (Preview)。
(这个职位一切都来自于原来的文章上面)
- JavaScript客户端库的Azure存储能够使用类似的Blob,表,队列和文件存储服务的许多Web开发方案,并与现代的浏览器兼容
- 新的JavaScript客户端库浏览器支持所有最新的REST API版本2016年5月31日提供的存储功能,因为它与使用Azure存储客户端库Node.js的 Browserify建
我们强烈建议使用SAS tokens对Azure存储进行身份验证,因为JavaScript客户端库将在浏览器中向用户公开身份验证令牌。强烈建议使用范围和时间有限的SAS令牌。在理想的Web应用程序中,预计后端应用程序将在用户登录时对其进行身份验证,然后向客户端提供SAS令牌以授权访问存储帐户。这消除了使用帐户密钥进行身份验证的需要。查看我们的Github存储库中的Azure Function sample,该存储库可以根据HTTP POST请求生成SAS令牌。
代码示例:
插入下面的脚本代码会在HTML代码。确保位于相同文件夹中的JavaScript文件。
<script src="azure-storage.common.js"></script/> <script src="azure-storage.blob.js"></script/>
让我们现在添加一些项目,以启动传输。在BODY标签内添加以下标签。请注意,按钮在单击时调用uploadBlobFromText方法。我们将在下一步中定义此方法。
<input type="text" id="text" name="text" value="Hello World!" /> <button id="upload-button" onclick="uploadBlobFromText()">Upload</button>
到目前为止,我们已经包含了客户端库,并添加HTML代码向用户显示一个文本输入和一个按钮来启动传送。当用户点击上传按钮时,会调用uploadBlobFromText。现在让我们来定义:
<script> function uploadBlobFromText() { // your account and SAS information var sasKey ="...."; var blobUri = "http://<accountname>.blob.core.windows.net"; var blobService = AzureStorage.createBlobServiceWithSas(blobUri, sasKey).withFilter(new AzureStorage.ExponentialRetryPolicyFilter()); var text = document.getElementById('text'); var btn = document.getElementById("upload-button"); blobService.createBlockBlobFromText('mycontainer', 'myblob', text.value, function(error, result, response){ if (error) { alert('Upload filed, open browser console for more detailed info.'); console.log(error); } else { alert('Upload successfully!'); } }); } </script>
- 1. 从浏览器按顺序从Azure Blob存储下载文件
- 2. 将文件上传到Azure Blob存储
- 3. 从本地存储上传所有文件到Azure Blob存储
- 4. Silverlight中的Azure Blob存储浏览器
- 5. 如何从网站图片上传文件到Azure Blob存储?
- 6. 将文件从客户端上传到Azure Blob存储| MVC
- 7. 直接上传文件到azure?
- 8. Azure存储blob从url上传
- 9. 上传存储在Azure Blob存储中的文件
- 10. HTLM5文件直接输入到浏览器缓存(没有上传/服务器)
- 11. 简单的PHP cURL文件上传到Azure存储blob
- 12. 将视频文件上传到NODEJS中的AZURE BLOB存储
- 13. 上传文件到Azure BLOB存储 - Parallel.Foreach比Foreach慢
- 14. Windows Azure Web角色将文件上传到Blob存储
- 15. Azure - 通过共享主机上传文件到blob存储
- 16. 直接上传字符串从浏览器到s3没有本地文件
- 17. FileUpload文件到Azure Blob存储
- 18. Azure的Blob存储下载文件,而不是在浏览器中打开
- 19. 如何直接将文件上传到云存储从直接下载链接
- 20. 直接上传到Cloudinary从浏览器错误的请求
- 21. Azure存储文件力量下载到浏览器
- 22. C#Azure存储Blob上传TransactionScope
- 23. 直接从本地文件夹上传文件,使用浏览器
- 24. 如何使用持续集成从github上传文件到Azure Blob存储
- 25. 如何直接从浏览器访问存储器中的pdf文件?
- 26. 从URL上传图像到Azure Blob存储
- 27. 将大文件上传到azure blob
- 28. 从浏览器自动上传文件
- 29. Azure Blob存储 - 在新文件上传到blob容器中的特定文件夹时设置警报
- 30. 如何检查正确上传的Azure存储BLOB文件?
本文使用Web服务器作为中介,使用自定义JavaScript分块方法中继块天青。这可能是光滑的,但不适合这个问题。 – 2016-03-23 04:07:03