www.dextsolution.com
DEXTUPLOAD
X5
製品の説明 > 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属性を『*』値に設定しないように注意する必要があります。

共有アクセストークンを使用してアップロードする

  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でエンコードされます。