別のサーバーを仲介として使用せずに、Web ユーザーがファイルを Azure BLOB ストアに直接アップロードできるようにする HTML フォームを作成することは可能ですか? S3 と GAW blobstore の両方でこれが可能ですが、Azure Blob Storage のサポートが見つかりません。
5 に答える
ブラウザーから BLOB ストレージにファイルを直接アップロードする方法については、次のブログ記事をご覧ください。
http://coderead.wordpress.com/2012/11/21/uploading-files-directly-to-blob-storage-from-the-browser/
2 番目の投稿 (私が作成) は HTML 5 File API を使用しているため、すべてのブラウザーで機能するとは限りません。
基本的な考え方はShared Access Signature (SAS)
、BLOB コンテナー用の を作成することです。SAS にはWrite
アクセス許可が必要です。Windows Azure Blob Storage はまだCORSをサポートしていないため(Amazon S3 と Google の両方でサポートされています)、ユーザーがファイルをアップロードできるようにするには、ブロブ ストレージで HTML ページをホストする必要があります。その後、jQuery の Ajax 機能を使用できます。
Windows Azure ストレージ サービスが CORS をサポートするようになったので、これを行うことができます。発表はこちら: Windows Azure Storage リリース - CORS、JSON、Minute Metrics などの紹介.
ここに、このシナリオを説明する簡単な例があります: http://www.contentmaster.com/azure/windows-azure-storage-cors/
この例は、jQuery.ajax を使用してプライベート BLOB から直接アップロードおよびダウンロードする方法を示しています。この例では、サーバー コンポーネントで共有アクセス署名を生成する必要があります。これにより、クライアント コードでストレージ アカウント キーを公開する必要がなくなります。
これを行う方法の例をブログに投稿しました。コードは GitHub にあります。
これはGaurav Mantris の投稿に基づいており、Blob Storage 自体で JavaScript をホストすることによって機能します。
HTML5 ファイル API、AJAX、および MVC 3 を使用して堅牢なファイル アップロード コントロールを構築し、操作の進行状況の監視と操作のキャンセルを提供して、巨大なファイルを安全かつ確実に Windows Azure BLOB ストレージにアップロードできます。ソリューションは次のように機能します。
- ユーザーがアップロードしたファイルを受け入れて処理するクライアント側 JavaScript。
- JavaScript によって送信されたファイル チャンクを処理するサーバー側コード。
- JavaScript を呼び出すクライアント側 UI。
ここでサンプル コードを入手してください: HTML5 コントロールを介した Windows Azure Blob Storage への信頼性の高いアップロード