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は、Azure Blob Storageにファイルを直接アップロードするために共有アクセストークンが必要です。共有アクセストークンはセキュリティのため、バックエンドで生成し、DEXTUploadX5に送信する必要があります。

Azure Blob Storageにアップロードするには、アップロードモードを『AZRBS』に設定し、setAZRBSUploadConfigメソッドを使用して必要な設定値を提供する必要があります。

dx.setUploadMode("AZRBS");
dx.setAZRBSUploadConfig({
    accountName: "photomanager",
    containerName: "photos",
    sasListURL: "https://domain/path/get-list-sastoken",
    sasUploadURL: "https://domain/path/get-upload-sastoken"
});

上記のコードにおいて、accountNameはAzure Blob Storageのアカウント名、containerNameはBlob Storageのコンテナ名を指します。sasListURLとsasUploadURLはそれぞれ共有アクセストークンを取得するための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を取得できます。

バケットにアップロードされるファイルはBlob名で区別されます。一般的にBlob名はファイル名を使用しますが、同じ名前のファイル同士が上書きされる問題を解決するため、Blob名をより具体的に設定する必要があります。製品ではデフォルトでBlob名をファイル名として使用しますが、ファイル名以外の形式を設定するには、makeKeyプロパティにBlob名を生成する関数を設定します。ここでKeyとBlob名は同じ意味で使用されます。

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

Azure Blob Storageは、Amazon S3と同様に、Blob名に「/」文字を挿入することで、フォルダー構造のようにファイルを区別できます。

特徴
  • DEXTUploadX5は、Azure Blob Storageサービスがサポートするマルチパートアップロード方式を使用するため、大容量ファイルのアップロードが可能です。
  • 続きアップロード機能は、最大7日以内に限り有効です。コミットされていないBlobのブロックは7日間のみ保持されます。
  • 大容量ファイルをアップロードする場合、chunkSizeの値を変更する必要がある場合があります。
  • Azure Blob Storageにファイルをアップロードする場合、進行状況ウィンドウに表示される進行率は、他のアップロード方式に比べて自然でない場合があります。
  • メタデータもアップロードされます。ただし、値はBASE64でエンコードされます。