www.dextsolution.com
DEXTUPLOAD
X5
menu toggle製品の説明 > Azure Blob Storageファイルのダウンロード

Azure Blob Storageファイルのダウンロード

Azureのデータストレージサービスには、Blob Storage、Table Storage、Queue Storage、File Storageなどがあります。DEXTUploadX5は、Blob Storageサービスからファイルをダウンロードする機能を提供します。

DEXTUploadX5製品がAzure Blob Storageからファイルをダウンロードするためには、異なるソース間の通信を許可する必要があるため、ストレージを使用するアカウントのBlobサービスにCORS設定を行う必要があります。アップロードおよびダウンロード機能を使用するためには、HEAD、GET、POST、PUT、OPTIONSのリクエストメソッドと、content-type、x-request-with、x-ms-*のリクエストヘッダーを許可する必要があります。また、運用時にはAllowed Origins属性を『*』値に設定しないように注意する必要があります。

Azure Blob storage - CORS

コンテナへの匿名アクセスが許可されている場合

DEXTUploadX5の単一ファイルダウンロードまたは複数ファイルダウンロード機能を使用してファイルをダウンロードできます。仮想ファイルを登録する際、url属性にAzure Blob Storage内のファイルオブジェクトのURLを設定します。

コンテナに格納されたファイル(Blob)は、以下のアドレス体系でアクセス可能です。

https://{account-name}.blob.core.windows.net/{container-name}/{blob-name}
dx.addVirtualFile({ name: "bridge_509147.jpg", size: 509147, url: "https://photomanager.blob.core.windows.net/photos/bridge_509147.jpg" });
dx.addVirtualFile({ name: "beach_239826.jpg", size: 239826, url: "https://photomanager.blob.core.windows.net/photos/beach_239826.jpg" });
dx.addVirtualFile({ name: "cosmos (empty) 195779.jpg", size: 195779, url: "https://photomanager.blob.core.windows.net/photos/cosmos+%28empty%29+195779.jpg" });
共有アクセストークンを使用してダウンロードする

匿名アクセスが許可されていない環境でAzure Blob Storageからファイルを直接ダウンロードするには、共有アクセストークンを使用する必要があります。共有アクセストークンはセキュリティのため、バックエンドで生成され、DEXTUploadX5に送信されます。

Azure Blob Storageからダウンロードするには、ダウンロードモードを「AZRBS」に設定し、setAZRBSDownloadConfigメソッドを使用して必要な設定値を提供する必要があります。

dx.setDownloadMode("AZRBS");
dx.setAZRBSDownloadConfig({
    accountName: "photomanager",
    containerName: "photos",
    sasDownloadURL: "https://domain/path/get-download-sastoken"
});
dx.addVirtualFile({ name: "bridge_509147.jpg", size: 509147, url: "https://photomanager.blob.core.windows.net/photos/bridge_509147.jpg" });
dx.addVirtualFile({ name: "beach_239826.jpg", size: 239826, url: "https://photomanager.blob.core.windows.net/photos/beach_239826.jpg" });
dx.addVirtualFile({ name: "cosmos (empty) 195779.jpg", size: 195779, url: "https://photomanager.blob.core.windows.net/photos/cosmos+%28empty%29+195779.jpg" });

上記のコードで、accountNameはAzure Blob Storageのアカウント名、containerNameはBlob Storageのコンテナ名を指します。sasDownloadURLは共有アクセストークンを取得するためのURLです。

プラットフォームに適したAzure Storage SDKを使用して、サーバー側でファイルダウンロードプロセスに必要な共有アクセストークンを取得するステップを実装すれば、アクセスキーなどのセキュリティ情報を露出せずに、ファイルダウンロードプロセスをDEXTUploadX5が処理するようにできます。

共有アクセストークンを取得するプロセスを理解するために、Java WebアプリケーションやASP.NET環境で利用可能な例が提供されていますので、提供された例を参考に実装してください。

  • JavaとMavenを使用する環境の場合、Azure SDKの取得方法

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-storage-blob</artifactId>
        <version>12.x.x</version>
    </dependency>
  • JavaとGradleを使用する環境の場合、Azure SDKを取得する方法

    implementation 'com.azure:azure-storage-blob:12.x.x'
  • ASP.NET 環境の場合、Azure Storage SDK の取得方法

    NuGet パッケージ マネージャーを使用して Azure.Storage.Blobs パッケージをインストールすると、Azure.Identity.dll、Azure.Storage.Blobs.dll、Azure.Storage.Common.dll、netstandard.dll を取得できます。

ダウンロードするオブジェクトのアドレスを仮想ファイルの URL に設定すると、アドレスからキー値を分離してダウンロード処理を実行します。

共有アクセストークンを使用してファイルをダウンロードする場合、URL属性に必ずBlobのアドレスを指定する必要はありません。DEXTUploadX5はURL属性が空の場合、ダウンロードを実行しないため、URL属性に最小限の情報のみを設定すれば十分です。ただし、この処理を行う場合、URLからキー値を抽出できないため、makeKey属性にキーを生成する関数を設定する必要があります。ここでkeyはBlobの名前を意味します。

dx.setAZRBSDownloadConfig({
    ...
    // Blob name: component-name/file-name 
    makeKey: item => `${item.controlId}/${item.name}`
});

以降の作業は、単一ファイルのダウンロードまたは複数ファイルのダウンロードと同様に、ボタンバインディングを使用するか、直接downloadメソッドを呼び出してダウンロードを行うことができます。

特徴
  • 再開機能をサポートしています。
  • Azure Blob Storageからファイルをダウンロードする場合、進行状況ウィンドウに表示される進行率が他のダウンロード方法に比べて自然でない場合があります。
  • Azureウェブコンソールを使用してファイルを確認すると、ファイルのサイズがバイト単位で表示されません。ファイルのサイズが明確でない場合、ダウンロード進行状況ウィンドウに表示される進行率が正しく表示されない可能性があります。