ColdFusion と Azure Blob

概要

Blob(Binary Large OBject、バイナリラージオブジェクト)には、画像、テキストファイル、ビデオまたはオーディオが含まれます。Azure Blob Storage は、クラウドの永続的なデータストレージです。Blob データの保存に利用できます。

ColdFusion と Azure Blob

ColdFusion(2018 リリース)には、AWS S3 ストレージサービスのサポートが含まれています。ColdFusion(2021 リリース)では、これを拡張して Azure Blob を使用したマルチクラウドストレージを提供し、要件に基づいて、データの保存および取得に様々なストレージサービスを使用できます。

ColdFusion では、Azure ストレージサービスの次の操作を利用できます。

  • 例えば、コンテナの作成、更新、削除、リスト表示など、様々な操作を実行する。
  • Blob に項目をアップロードしたり、Blob からダウンロードしたりする。
  • コンテナにポリシーを適用する。
  • 同じアカウント内のコンテナ間で Blob をコピーする。
  • Shared Access Signature を使用して様々なユーザーのコンテナまたは Blob の権限を共有する。
注意:

Weblogic 14.1.1.0.0 では、Azure BLOB をストレージとして使用すると、Null ポインター例外が発生します。この問題を回避するには、回避策を参照してください。

はじめに

azureblob パッケージのインストール

Zip インストーラーを使用する場合に限り、Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、Azure Blob のパッケージはインストールされていません。最初の手順は、ColdFusion の Blob パッケージをインストールすることです。

注意:GUI インストーラーを使用する場合、これらのパッケージは事前にインストールされています。

Blob のパッケージは、azureblob と呼ばれます。

azureblob パッケージをインストールするには、ColdFusion Administrator のパッケージマネージャーページを使用するか、以下の手順に従います。

  1. <CF_HOME>/cfusion/bin に移動します。

  2. 次のコマンドを入力します。

    • Windows:cfpm.bat
    • Linux:cfpm.sh
  3. コマンド install azureblob を入力します。

    Azure Blob パッケージがインストールされるまで待ちます。

詳しくは、ColdFusion パッケージマネージャーを参照してください。

クラウドサービス資格情報および設定の追加

ColdFusion(2021 リリース)には、様々なクラウドサービスにアクセスするためのオブジェクトを作成するためにハンドルを提供するメソッド、getCloudService() があります。

サービスハンドルのシンタックスを次に示します。

service=getCloudService(cloudCred,cloudConfig)

  • cloudCred:クラウドサービスの資格情報を定義します。構造体または文字列です(資格情報エイリアスとも呼ばれます)。
  • cloudConfig:クラウドサービス設定の詳細を定義します。構造体または文字列です(設定エイリアスとも呼ばれます)。

Azure 資格情報を獲得したら、次のいずれかの方法でこれらの資格情報を宣言する必要があります。それによって初めて、これらの資格情報を使用して Blob オブジェクトを作成でき、それからそのオブジェクトを使用して様々な Azure Blob メソッドを呼び出すことができます。

ColdFusion Administrator

資格情報の設定

ColdFusion Administrator で、データとサービス/クラウド資格情報をクリックします。

エイリアスは、クラウドサービスおよびその設定の詳細の名前付き表現です。ColdFusion Administrator を使用して設定エイリアスを設定できます。

クラウド資格情報の追加
クラウド資格情報の追加

接続文字列には、アプリケーションから Azure Storage アカウントのデータにアクセスするために必要な認証情報が含まれています。

詳しくは、Azure Storage の接続文字列を構成するを参照してください。

詳細を入力したら、「資格情報を追加」をクリックします。

設定オプションの設定

ColdFusion Administrator で、「データとサービス/クラウド設定」をクリックします。

設定エイリアス、ベンダー、サービスの名前など、次の詳細を入力します。

クラウド設定オプションの追加
クラウド設定オプションの追加

設定オプションを追加した後、さらにいくつかのオプションを追加する必要がある場合があります。次に表示される画面で追加できます。場合によって追加する必要があるオプションを次に示します。

  • 同時リクエスト数
  • 単一ブロックサイズ(バイト)
  • 最大実行時間(ミリ秒)
  • 再試行ポリシーのタイプ
  • ログを有効にする

詳しくは、クラウド設定オプションを参照してください。

Azure Blob サービス対象の作成

Blob 資格情報および設定オプションのエイリアスを作成したら、getCloudService API を使用してオブジェクトを作成し、次のコードを CFM に含めることができます。 

blobObject= getCloudService("blobCred", "blobConf")

Application.cfc

Application.cfc で Blob 資格情報および設定オプションを指定できます。次に例を示します。

omponent { 
    this.name =&quot;AzureblobTest&quot; 
    this.serialization.preservecaseforstructkey=true 
    this.enableNullSupport=true 
    void function onApplicationStart(){ 
        application.blobCred = { 
            &quot;vendorName&quot; : &quot;AZURE&quot;, 
            &quot;connectionString&quot; : &quot;xxxxxxxxxxx&quot; 
        } 
 
        application.blobConf = { 
            &quot;serviceName&quot; : &quot;AZURE_BLOB&quot; 
        } 
 } 
 
}

Azure Blob サービス対象の作成

blobObject = getCloudService(application.blobCred, application.blobConf) 

CFM ページ上

CFM ページでは、次に示す 4 つの方法のいずれかで Blob 資格情報および設定オプションを指定できます。

資格情報エイリアスおよび設定エイリアス

Azure Blob 資格情報および設定オプション用のエイリアスを作成したら、次に示すように、getCloudService ハンドルでそれらのエイリアスを使用できます。

<cfscript> 
  // ColdFusion Administrator で資格情報エイリアスと設定エイリアスを定義 
  blobObject=getCloudService(&quot;blobCred&quot;,&quot;blobConf&quot;) 
  // 以下にコードを記述 
  ........... 
</cfscript>

資格情報エイリアスおよび設定オプションの構造体

<cfscript> 
    blobCred = { 
        &quot;vendorName&quot; : &quot;AZURE&quot;, 
        &quot;connectionString&quot; : &quot;xxxxxx&quot; 
    } 
    blobConf = { 
        &quot;serviceName&quot; : &quot;AZURE_BLOB&quot;, 
        &quot;options&quot; : { 
            &quot;absorbConditionalErrorsOnRetry&quot; : true/false, 
            &quot;concurrentRequestCount&quot; : 5, 
            &quot;useTransactionalContentMD5&quot; : true/false, 
            &quot;storeBlobContentMD5&quot; : true/false, 
            &quot;disableContentMD5Validation&quot;: true/fasle, 
            &quot;singleBlobPutThresholdInBytes&quot; : 12345, 
            &quot;skipEtagLocking&quot; : true/false, 
            &quot;retryPolicyFactory&quot;: { 
                &quot;retryPolicyType&quot; : &quot;EXPONENTIAL&quot; | &quot;LINEAR&quot; | &quot;NONE&quot;, 
                &quot;deltaBackoffIntervalInMs&quot; : 12, 
                &quot;maxAttempts&quot; : 3, 
                &quot;resolvedMinBackoff&quot; : 1 
            }, 
            &quot;locationMode&quot; : &quot;PRIMARY_ONLY&quot; | &quot;PRIMARY_THEN_SECONDARY&quot; | &quot;SECONDARY_ONLY&quot; | &quot;SECONDARY_THEN_PRIMARY&quot;, 
            &quot;maximumExecutionTimeInMs&quot; : 2, 
            &quot;timeoutIntervalInMs&quot; : 1 
        } 
    } 
</cfscript>

設定エイリアスおよび資格情報の構造体

<cfscript> 
    // 設定エイリアスとサービス資格情報構造体を使用 
    // Blob 資格情報 
    blobCreds={ 
      &quot;vendorName&quot; : &quot;AZURE&quot;, 
        &quot;connectionString&quot; : &quot;xxxxxx&quot; 
    } 
    blobObject= getCloudService(blobCreds, &quot;blobConf&quot;) 
    // 以下にコードを記述 
    ..................................... 
</cfscript>

資格情報と設定オプションの両方の構造体

<cfscript> 
  // クラウドの資格情報と設定の構造体を使用 
  blobCred = { 
        &quot;vendorName&quot; : &quot;AZURE&quot;, 
        &quot;connectionString&quot; : &quot;xxxxxx&quot; 
    } 
    blobConf = { 
        &quot;serviceName&quot; : &quot;AZURE_BLOB&quot;, 
        &quot;options&quot; : { 
            &quot;absorbConditionalErrorsOnRetry&quot; : true/false, 
            &quot;concurrentRequestCount&quot; : 5, 
            &quot;useTransactionalContentMD5&quot; : true/false, 
            &quot;storeBlobContentMD5&quot; : true/false, 
            &quot;disableContentMD5Validation&quot;: true/fasle, 
            &quot;singleBlobPutThresholdInBytes&quot; : 12345, 
            &quot;skipEtagLocking&quot; : true/false, 
            &quot;retryPolicyFactory&quot;: { 
                &quot;retryPolicyType&quot; : &quot;EXPONENTIAL&quot; | &quot;LINEAR&quot; | &quot;NONE&quot;, 
                &quot;deltaBackoffIntervalInMs&quot; : 12, 
                &quot;maxAttempts&quot; : 3, 
                &quot;resolvedMinBackoff&quot; : 1 
            }, 
            &quot;locationMode&quot; : &quot;PRIMARY_ONLY&quot; | &quot;PRIMARY_THEN_SECONDARY&quot; | &quot;SECONDARY_ONLY&quot; | &quot;SECONDARY_THEN_PRIMARY&quot;, 
            &quot;maximumExecutionTimeInMs&quot; : 2, 
            &quot;timeoutIntervalInMs&quot; : 1 
        } 
    } 
  blob = getCloudService(blobCred, blobConf ) 
   
  // 以下にコードを記述 
  ................................................................... 
</cfscript>

Admin API

また、Admin API を使用して SQS 資格情報および設定オプションを追加することもできます。資格情報および設定を追加するためのメソッドは、cloud.cfc で使用できます。

次に、メソッド addCredential(struct credential) および addServiceConfig(struct config) の使用例を示します。

資格情報の追加

<cfscript> 
  // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す 
  adminObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;) 
  adminObj.login(&quot;admin&quot;) 
   
  // クラウドコンポーネントのオブジェクトを作成 
  cloudObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.cloud&quot;) 
   
  // 資格情報構造体を定義 
  credentialStruct={ 
        &quot;vendorName&quot; : &quot;AZURE&quot;, 
        &quot;connectionString&quot; : &quot;xxxxxx&quot; 
  } 
   
  // 資格情報の credentialStruct を追加 
  try{ 
    cloudObj.addCredential(credentialStruct) 
    writeOutput(&quot;Credentials added successfully&quot;) 
  } 
  catch(any e){ 
      writeDump(e) 
  } 
</cfscript>

設定の追加

<cfscript> 
  // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す 
  adminObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;) 
  adminObj.login(&quot;admin&quot;) 
   
  // クラウドコンポーネントのオブジェクトを作成 
  cloudObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.cloud&quot;) 
   
  // 設定構造体を定義 
  configStruct={ 
      &quot;&quot;serviceName&quot; : &quot;AZURE_BLOB&quot;, 
        &quot;options&quot; : { 
            &quot;absorbConditionalErrorsOnRetry&quot; : true/false, 
            &quot;concurrentRequestCount&quot; : 5, 
            &quot;useTransactionalContentMD5&quot; : true/false, 
            &quot;storeBlobContentMD5&quot; : true/false, 
            &quot;disableContentMD5Validation&quot;: true/fasle, 
            &quot;singleBlobPutThresholdInBytes&quot; : 12345, 
            &quot;skipEtagLocking&quot; : true/false, 
            &quot;retryPolicyFactory&quot;: { 
                &quot;retryPolicyType&quot; : &quot;EXPONENTIAL&quot; | &quot;LINEAR&quot; | &quot;NONE&quot;, 
                &quot;deltaBackoffIntervalInMs&quot; : 12, 
                &quot;maxAttempts&quot; : 3, 
                &quot;resolvedMinBackoff&quot; : 1 
            }, 
            &quot;locationMode&quot; : &quot;PRIMARY_ONLY&quot; | &quot;PRIMARY_THEN_SECONDARY&quot; | &quot;SECONDARY_ONLY&quot; | &quot;SECONDARY_THEN_PRIMARY&quot;, 
            &quot;maximumExecutionTimeInMs&quot; : 2, 
            &quot;timeoutIntervalInMs&quot; : 1 
        } 
  } 
   
  // 設定の configStruct を追加 
  try{ 
    cloudObj.addServiceConfig(configStruct) 
    writeOutput(&quot;Configuration service added successfully&quot;) 
  } 
  catch(any e){ 
    writeDump(e) 
  } 
</cfscript>

CFSetup

CFSetup 設定ユーティリティを使用して SQS の資格情報と設定をセットアップすることもできます。

クラウド資格情報の追加

  • add cloudcredential credentialAlias=blobCred accesskeyid=<access> secretaccesskey=<secret> region=ap-southeast-1 vendorname=AWS

資格情報の設定

  • set cloudcredential snscred secretaccesskey=awssecret

クラウド設定の追加

  • add cloudconfiguration serviceName=S3 alias=s3Config

設定の設定

  • set cloudconfiguration conf1 alias=conf2

ルートの作成

ルートオブジェクトを作成します。ルートが存在しない場合は、ルートが作成されます。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

root(rootName,createIfNotExists)

パラメーター

パラメーター

説明

必須

rootName

作成するルートの名前。

はい

createIfNotExists

true または false。ルートが存在しない場合は、作成されます。

いいえ

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  // ルートを作成 
  try{ 
    storageService.root(&quot;root014&quot;,&quot;false&quot;) // createIfNotExists=FALSE 
    writeOutput(&quot;Root created successfully&quot;) 
    } 
  catch(any e){ 
    writeOutput(&quot;Unable to create root&quot;) 
  } 
</cfscript>

ルートの作成 - 追加のパラメーター

追加のパラメーターを使用してルートオブジェクトを作成します。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

createRoot(parameterStruct)

パラメーター

パラメーター

説明

必須

containerName

作成するルートの名前。

はい

publicAccesstype

publicAccessType パラメーターは、アクセス権が付与されるレベルを定義します。このパラメーターは、次の 3 つの値のいずれかを受け入れることができます。

  • BLOB:Blobレベルのパブリックアクセスを指定します。クライアントは、このコンテナ内の Blob のコンテンツおよびメタデータを読み取ることができますが、コンテナのメタデータを読み取ったりコンテナ内の Blob をリスト表示したりできません。
  • CONTAINER:コンテナレベルのパブリックアクセスを指定します。クライアントは、Blob コンテンツ、メタデータ、コンテナのメタデータを読み取ったり、コンテナ内の Blob をリスト表示したりできます。
  • OFF:パブリックアクセスなしを指定します。アカウント所有者のみがこのコンテナのリソースにアクセスできます。

いいえ

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    // ルートオブジェクトを作成 
    createRequest= { 
        &quot;containerName&quot; : &quot;root111&quot;, 
        &quot;publicAccessType&quot; :&quot;BLOB&quot; 
    } 
    try{ 
        storageService.createcontainer(createRequest) 
        writeOutput(&quot;Root created successfully&quot;) 
    } 
    catch(any e){ 
        writeDump(e) 
    } 
</cfscript>

すべての Blob のリスト表示

 ストレージアカウントのルートオブジェクトのリストを取得します。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

listAll(parameterStruct)

パラメーター

パラメーター

説明

必須

prefix

名前が指定された接頭辞で始まる Blob のみを返します。

いいえ

isFlatList

true または false。 

いいえ

listingDetails

応答に含める 1 つまたは複数の値を指定します。

  • SNAPSHOTS:応答にスナップショットが含まれる必要があることを指定します。
  • METADATA:応答に Blob メタデータが含まれていることを指定します。
  • COPY:応答に Blob コピー操作に関連するメタデータが含まれる必要があることを指定します。

いいえ

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    // すべての Blob をリストアップ 
    blobList=storageService.listAll() 
    writeDump(blobList) 
</cfscript>

Blob の削除

Blob およびそのスナップショットを削除します。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

delete(parameterStruct)

パラメーター

パラメーター

説明

必須

key

削除する Blob の名前。

はい

deleteSnapshotsOption

削除する Blob スナップショットを指定します。有効な値は、次のとおりです。

  • DELETE_SNAPSHOTS_ONLY
  • INCLUDE_SNAPSHOTS
  • NONE

いいえ

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  // ルートを作成 
  try{ 
    storageService.root(&quot;root014&quot;,&quot;false&quot;) // createIfNotExists=FALSE 
    writeOutput(&quot;Root created successfully&quot;) 
    } 
  catch(any e){ 
    writeOutput(&quot;Unable to create root&quot;) 
  } 
  rootArray=storageService.listAll() 
  writedump(rootArray[1]) 
 
  // ルートを削除 
  try{ 
    storageService.delete(rootArray[1].name) 
    writeOutput(&quot;Root deleted successfully&quot;) 
  } 
  catch(any e){ 
    writeOutput(&quot;Unable to delete root&quot;) 
  } 
</cfscript> 

コンテナ内のファイルのアップロード

コンテナにファイルをアップロードできます。

詳しくは、Blob へのファイルのアップロードを参照してください。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

uploadFile(parameterStruct)

パラメーター

パラメーター

説明

必須

key

ファイルの名前。

はい

srcFile

アップロードされるファイルのパス。

はい

accessCondition

リクエストを続行するために満たす必要がある条件を表す AccessCondition オブジェクト。有効な値は、次のとおりです。

  • leaseID
  • ifMatchETag
  • ifNoneMatchETag
  • ifModifiedSinceDate
  • ifUnmodifiedSinceDate
  • ifSequenceNumberLessThanOrEqual
  • ifSequenceNumberLessThan
  • ifSequenceNumberEqual
  • ifMaxSizeLessThanOrEqual
  • ifAppendPositionEqual

いいえ

context

現在の操作のコンテキストを表します。

いいえ

options

リクエストの追加のオプションを指定します。null の場合、デフォルトオプションがリクエストに適用されます。

いいえ

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  // コンテナ構造体を作成 
  createRequest= { 
      &quot;containerName&quot; : &quot;container3&quot;, 
      &quot;publicAccessType&quot; :&quot;BLOB&quot; 
  } 
  rootObj=storageService.createcontainer(createRequest) 
   
  // リクエストを続行するために満たす必要がある条件を表す accessCondition オブジェクト 
  uploadStruct = { 
    &quot;blobName&quot; : &quot;blob003&quot;, 
    &quot;srcFile&quot; : &quot;#ExpandPath('./')#/file.txt&quot; 
  } 
 
 
  try { 
    uploadResponse=rootObj.uploadFile(uploadStruct) 
    writeOutput(&quot;File uploaded successfully&quot;) 
    writeDump(uploadResponse) 
  } 
  catch(any e){ 
    writeDump(e) 
  } 
 
</cfscript> 

コンテナからのファイルのダウンロード

コンテナからファイルをダウンロードします。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

downloadToFile(parameterStruct)

パラメーター

パラメーター

説明

必須

destinationFile

ファイルのダウンロード先のパス。

はい

key

コンテナに関連付けられたキー。

はい

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
    // ファイルをアップロード 
    uploadStruct = { 
      &quot;key&quot; : &quot;key001&quot;, 
      &quot;srcFile&quot; : &quot;#ExpandPath('./')#/file.txt&quot; 
    } 
    try { 
      rootObj=storageService.root(&quot;root015&quot;,&quot;true&quot;) // createIfNotExists=FALSE 
      uploadResponse=rootObj.uploadFile(uploadStruct) 
      writeOutput(&quot;File uploaded successfully&quot;) 
      // writeDump(uploadResponse) 
    } 
    catch(any e){ 
      writeOutput(&quot;File upload failed&quot;) 
    } 
    // ファイルをダウンロード 
    downloadStruct={ 
      &quot;key&quot;: &quot;key001&quot;, 
      &quot;destinationFile&quot;: &quot;file.txt&quot; 
    } 
    try{ 
      downloadResponse=rootObj.downloadToFile(downloadStruct) 
      writeOutput(&quot;File downloaded successfully&quot;) 
    } 
    catch (any e){ 
      writedump(e) 
    } 
</cfscript> 

Blob のコピー

Blob を別の Blob にコピーします。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

copy(paramerStruct)

パラメーター

パラメーター

説明

必須

source

ソース Blob。

はい

sourceVersion

Blob がアップロードされた際のバージョン。

いいえ

sourceAccessCondition

ストレージサービスに対する操作に使用されるアクセス条件のセットを表します。

いいえ

storageClass

有効な値は、次のとおりです。

  • HOT
  • COOL
  • ARCHIVE

いいえ

key

Blob に関連付けられたキー。

はい

<cfscript> 
    storageService1 = getCloudService(application.blobCred, application.blobConf) 
    containerList = storageService1.listAll() 
    // writeDump(containerList) 
    object1=&quot;container-object1&quot; 
    containerobject = storageService1.container(&quot;#object1#&quot;,true); 
    containerList = storageService1.listAll() 
    // writeDump(containerList) 
    FileWrite(&quot;#ExpandPath('./')#file.txt&quot;,&quot;this test copy with access condition and storage classes&quot;); 
    src = &quot;file.txt&quot; 
    blobName = &quot;A/B/blob1&quot; 
    uploadRequest = { 
        &quot;srcFile&quot; : src, 
        &quot;blobName&quot; : blobName 
    } 
    uploadResponse = containerobject.uploadFile(uploadRequest); 
    containerList = containerobject.listAll() 
    // writeDump(containerList) 
    // Blob オブジェクトをコピー 
    copyRequest = { 
        &quot;source&quot; : &quot;container-object1/A/B/blob1&quot;, 
        &quot;storageClass&quot; : &quot;HOT&quot;, 
        &quot;blobName&quot; : &quot;C/D/blob2&quot; // 宛先 Blob 
    } 
    copyResponse = containerobject.copy(copyRequest); 
    containerList = containerobject.listAll() 
    writeDump(copyResponse) 
</cfscript>

ディレクトリのアップロード

コンテナのディレクトリをアップロードします。また、一括アップロードを実行することもできます。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

uploadDirectory(parameterStruct)

パラメーター

パラメーター

説明

必須

prefix

指定された接頭辞で始まるディレクトリのみを選択します。

はい

srcDirectory

アップロード元のディレクトリ。

はい

uploadNestedDirectory

true または false。メインのフォルダー内にサブディレクトリを含めるかどうかを指定します。

いいえ

<cfscript>
   storageService = getCloudService(application.blobCred, application.blobConf)
   object1=&quot;root-object1&quot;

   uploadRequest = {
           &quot;prefix&quot; : &quot;prefix&quot;,
           &quot;srcDirectory&quot; : &quot;DirLocation&quot;,
           &quot;uploadNestedDirectory&quot;:true
         }
   root = storageService.container(&quot;#object1#&quot;,true);
   uploadResponse = root.uploadDirectory(uploadRequest);   writeDump(uploadResponse)
 </cfscript> 

ファイルの並列アップロード

ルートのファイルを並行してアップロードします。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

parallelUploadFile(parameterStruct)

パラメーター

パラメーター

説明

必須

key

アップロードするオブジェクトに関連付けられたキー。

はい

srcFile

アップロードされるファイルのパス。

はい

accessCondition

リクエストを続行するために満たす必要がある条件を表す AccessCondition オブジェクト。有効な値は、次のとおりです。

  • leaseID
  • ifMatchETag
  • ifNoneMatchETag
  • ifModifiedSinceDate
  • ifUnmodifiedSinceDate
  • ifSequenceNumberLessThanOrEqual
  • ifSequenceNumberLessThan
  • ifSequenceNumberEqual
  • ifMaxSizeLessThanOrEqual
  • ifAppendPositionEqual

いいえ

context

現在の操作のコンテキストを表します。

いいえ

options

リクエストの追加のオプションを指定します。null の場合、デフォルトオプションがリクエストに適用されます。

構造体には、次が含まれます。

  • MaximumExecutionTimeInMs - Int
  • TimeoutIntervalInMs - Int
  • UseTransactionalContentMD5 - Bool
  • StoreBlobContentMD5 - Bool
  • RetryPolicyFactory - None、Exponential、Linear
  • LocationMode - PRIMARY_ONLY
  • EnableLogging - Bool
  • AbsorbConditionalErrorsOnRetry – Bool
  • ConcurrentRequestCount – Int
  • UseTransactionalContentMD5 – Bool
  • StoreBlobContentMD5 – Bool
  • DisableContentMD5Validation – Bool
  • SingleBlobPutThresholdInBytes - Int
  • EncryptionKey – RSA キー
  • SkipEtagLocking – Bool
  • RetryPolicyFactory
    • RetryPolicyType - "EXPONENTIAL" | "LINEAR" | "NONE"
    • DeltaBackoffIntervalInMs – Int
    • MaxAttempts – Int
    • ResolvedMinBackoff - Int
  • LocationMode- "PRIMARY_ONLY" | "PRIMARY_THEN_SECONDARY" | "SECONDARY_ONLY" | "SECONDARY_THEN_PRIMARY"
  • MaximumExecutionTimeInMs – Int
  • TimeoutIntervalInMs - Intc

いいえ

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    object1=&quot;root-new&quot; 
    Dirpath=#ExpandPath( &quot;.&quot;)#&&quot;/&quot; 
    rootObject = storageService.root(&quot;#object1#&quot;,true) 
    FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;This txt file is used to upload and download functionality for azure blob storage.&quot;) 
    src = &quot;uploadfile.txt&quot; key = &quot;key1&quot; uploadRequest = { &quot;srcFile&quot; : src, &quot;key&quot; : key, &quot;options&quot;: {&quot;timeoutIntervalInMs&quot;:2000} } try{ uploadResponse = rootObject.parallelUploadFile(uploadRequest) writeOutput(&quot;Successfully uploaded file parallelly&quot;) writeDump(uploadResponse) } catch(any e){ writeDump(e) } </cfscript>

ファイルの並行ダウンロード

ファイルを並行してダウンロードします。ファイルのサイズが大きい場合、このメソッドは内部で複数のスレッドを使用してファイルをダウンロードします。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

parallelDownloadFile(parameterStruct)

パラメーター

パラメーター

説明

必須

destinationFile

ダウンロードされるファイルの名前。

はい

filePath

宛先ファイルの位置。

はい

key

アップロードするオブジェクトに関連付けられたキー。

はい

srcFile

アップロードされるファイルのパス。

はい

accessCondition

リクエストを続行するために満たす必要がある条件を表す AccessCondition オブジェクト。有効な値は、次のとおりです。

  • leaseID
  • ifMatchETag
  • ifNoneMatchETag
  • ifModifiedSinceDate
  • ifUnmodifiedSinceDate
  • ifSequenceNumberLessThanOrEqual
  • ifSequenceNumberLessThan
  • ifSequenceNumberEqual
  • ifMaxSizeLessThanOrEqual
  • ifAppendPositionEqual

いいえ

context

現在の操作のコンテキストを表します。

いいえ

options

リクエストの追加のオプションを指定します。null の場合、デフォルトオプションがリクエストに適用されます。

構造体には、次が含まれます。

  • MaximumExecutionTimeInMs - Int
  • TimeoutIntervalInMs - Int
  • UseTransactionalContentMD5 - Bool
  • StoreBlobContentMD5 - Bool
  • RetryPolicyFactory - None、Exponential、Linear
  • LocationMode - PRIMARY_ONLY
  • EnableLogging - Bool
  • AbsorbConditionalErrorsOnRetry – Bool
  • ConcurrentRequestCount – Int
  • UseTransactionalContentMD5 – Bool
  • StoreBlobContentMD5 – Bool
  • DisableContentMD5Validation – Bool
  • SingleBlobPutThresholdInBytes - Int
  • EncryptionKey – RSA キー
  • SkipEtagLocking – Bool
  • RetryPolicyFactory
    • RetryPolicyType - "EXPONENTIAL" | "LINEAR" | "NONE"
    • DeltaBackoffIntervalInMs – Int
    • MaxAttempts – Int
    • ResolvedMinBackoff - Int
  • LocationMode- "PRIMARY_ONLY" | "PRIMARY_THEN_SECONDARY" | "SECONDARY_ONLY" | "SECONDARY_THEN_PRIMARY"
  • MaximumExecutionTimeInMs – Int
  • TimeoutIntervalInMs - Intc

いいえ

<cfscript> storageService = getCloudService(application.blobCred, application.blobConf) object1=&quot;root-download&quot; Dirpath=#ExpandPath( &quot;.&quot;)#&&quot;/&quot; 
    rootObject = storageService.root(&quot;#object1#&quot;,true) 
    FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;This txt file is used to upload and download functionality for azure blob storage.&quot;) 
    src = &quot;uploadfile.txt&quot; 
 key = &quot;key1&quot; 
 uploadRequest = { 
        &quot;srcFile&quot; : src, 
        &quot;key&quot; : key 
 } 
 // ファイルをアップロード   
    uploadResponse = rootObject.uploadFile(uploadRequest) 
    // アップロードした同じファイルをダウンロードして内容を確認 
 FileWrite(&quot;#Dirpath#download.txt&quot;,&quot;&quot;);     
    destination = &quot;download.txt&quot; 
    downloadRequest = { 
        &quot;destinationFile&quot; : destination, 
        &quot;key&quot; : key, 
        &quot;options&quot;: {&quot;timeoutIntervalInMs&quot;:2000} 
    } 
    try{ 
        downloadResponse = rootObject.parallelDownloadFile(downloadRequest) 
        writeOutput(&quot;Successfully downloaded file parallelly&quot;) 
        writeDump(downloadResponse) 
    } 
    catch (any e){ 
        writeDump(e) 
    } 
</cfscript>

オブジェクトのアップロード

ColdFusion オブジェクトをルートにアップロードします。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

uploadObject(parameterStruct)

パラメーター

パラメーター

説明

必須

object

アップロードする ColdFusion オブジェクト。

はい

blobName

オブジェクトのアップロード先の Blob の名前。

はい

type

オブジェクトのタイプ - json。

いいえ

options

リクエストの追加のオプションを指定します。null の場合、デフォルトオプションがリクエストに適用されます。

構造体には、次が含まれます。

  • MaximumExecutionTimeInMs - Int
  • TimeoutIntervalInMs - Int
  • UseTransactionalContentMD5 - Bool
  • StoreBlobContentMD5 - Bool
  • RetryPolicyFactory - None、Exponential、Linear
  • LocationMode - PRIMARY_ONLY
  • EnableLogging - Bool
  • AbsorbConditionalErrorsOnRetry – Bool
  • ConcurrentRequestCount – Int
  • UseTransactionalContentMD5 – Bool
  • StoreBlobContentMD5 – Bool
  • DisableContentMD5Validation – Bool
  • SingleBlobPutThresholdInBytes - Int
  • EncryptionKey – RSA キー
  • SkipEtagLocking – Bool
  • RetryPolicyFactory
    • RetryPolicyType - "EXPONENTIAL" | "LINEAR" | "NONE"
    • DeltaBackoffIntervalInMs – Int
    • MaxAttempts – Int
    • ResolvedMinBackoff - Int
  • LocationMode- "PRIMARY_ONLY" | "PRIMARY_THEN_SECONDARY" | "SECONDARY_ONLY" | "SECONDARY_THEN_PRIMARY"
  • MaximumExecutionTimeInMs – Int
  • TimeoutIntervalInMs - Intc

いいえ

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    rootObject = storageService.root(&quot;root-upload&quot;,true) 
    // アップロード構造体を定義 
    uploadRequestsstruct ={ 
        &quot;object&quot; : &quot;test string for encryption&quot;, 
        &quot;blobName&quot; : &quot;key001&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot;:{ 
            &quot;maximumExecutionTimeInMs&quot; : 1000 
        } 
    } 
    try{ 
        uploadResponse=rootObject.uploadObject(uploadRequestsstruct) 
        writeOutput(&quot;Object uploaded successfully&quot;) 
        writeDump(uploadResponse) 
    } 
    catch(any e){ 
        writeDump(e) 
    } 
</cfscript>

オブジェクトのダウンロード

ColdFusion オブジェクトをルートからダウンロードします。

  • Amazon S3 - はい
  • Azure - はい
  • マルチクラウド - はい

シンタックス

downloadObject(parameterStruct)

パラメーター

パラメーター

説明

必須

key

オブジェクトがアップロードされた際に使用したキー。

はい

type

ColdFusion オブジェクトのタイプ - json

はい

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    rootObject = storageService.root(&quot;root-download&quot;,true) 
    // アップロード構造体を定義 
    uploadRequestsstruct ={ 
        &quot;object&quot; : &quot;test string for encryption&quot;, 
        &quot;blobName&quot; : &quot;key001&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot;:{ 
            &quot;maximumExecutionTimeInMs&quot; : 1000 
        } 
    } 
    // オブジェクトをアップロード 
    rootObject.uploadObject(uploadRequestsstruct) 
    // ダウンロード構造体を定義 
    downloadObjectStruct = { 
        &quot;blobName&quot; : &quot;key001&quot;, 
        &quot;type&quot; :&quot;json&quot; 
    } 
    try{ 
        downloadResponse=rootObject.downloadObject(downloadObjectStruct) 
        writeOutput(&quot;Downloaded the object successfully&quot;) 
        writeDump(downloadResponse) 
    } 
    catch(any e){ 
        writeDump(e) 
    } 
</cfscript>

コンテナの作成

コンテナは、ストレージアカウントのデフォルトコンテナとして機能します。ストレージアカウントには、1 つのコンテナを含めることができます。コンテナに保存された Blob は、コンテナ名を参照せずに対処できます。詳しくは、Azure Blob コンテナを参照してください。

container メソッドを使用してコンテナを作成します。このメソッドは、2 つのパラメーターを受け入れます。

  • コンテナの名前(必須)
  • パブリックアクセスタイプ(オプション):publicAccessType パラメーターは、アクセス権が付与されるレベルを定義します。このパラメーターは、次の 4 つの値のいずれかを受け入れることができます。
    • BLOB:Blobレベルのパブリックアクセスを指定します。クライアントは、このコンテナ内の Blob のコンテンツおよびメタデータを読み取ることができますが、コンテナのメタデータを読み取ったりコンテナ内の Blob をリスト表示したりできません。
    • CONTAINER:コンテナレベルのパブリックアクセスを指定します。クライアントは、Blob コンテンツ、メタデータ、コンテナのメタデータを読み取ったり、コンテナ内の Blob をリスト表示したりできます。
    • OFF:パブリックアクセスなしを指定します。アカウント所有者のみがこのコンテナのリソースにアクセスできます。

スナップショットの作成

Blob スナップショットは、特定の時点で取得された Blob の読み取り専用バージョンです。スナップショットは、作成後、読み取り、コピーまたは削除できますが、変更することはできません。スナップショットは、ある時点での Blob をそのままバックアップする方法を提供します。

Blob に対するスナップショットの数に制限はありません。スナップショットは、明示的に削除されるまで保持されます。スナップショットは、ソース Blob より長く存続することはできません。Blob に関連付けられたスナップショットを列挙して、現在のスナップショットを追跡できます。

詳しくは、Azure Blob のスナップショットを参照してください。

シンタックス

createSnapshot(parameterStruct)

パラメーター

パラメーター

説明

必須

blobName

スナップショットを作成したい Blob の名前。

はい

keyName

Blob に関連付けられたキー。

はい

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  // コンテナを作成 
  container = storageService.container(&quot;con001&quot;,true) 
  src = &quot;#ExpandPath('./')#file.txt&quot; 
  //writedump(src) 
  blobname = &quot;Version-1&quot; 
  // Blob にファイルをアップロード 
  uploadRequest = { 
    &quot;srcFile&quot; : src, 
    &quot;blobName&quot; : blobname 
  } 
  uploadResponse = container.uploadFile(uploadRequest) 
  //writeDump(uploadResponse) 
  // スナップショットを作成 
  // スナップショット構造体を作成 
  versionRequest = { 
        &quot;blobName&quot; : &quot;Version-1&quot; 
      } 
  snapshot1 = container.Createsnapshot(versionRequest); 
  snapshot2 = container.Createsnapshot(versionRequest); 
  writeDump(snapshot1) 
  writeDump(snapshot2) 
</cfscript> 

様々なアカウントのコンテナのコピー

ストレージクラスを使用して、様々なアカウントの Blob をコピーします。

<cfscript>  
  storageService1 = getCloudService(application.blobCred, application.blobConf) 
  rootList = storageService1.listAll() 
   
  for (i=1;i LTE ArrayLen(rootList);i=i+1) 
   { 
   if( (i GT 0 ) and (rootList[i].name Neq &quot;rootpoc&quot;) ){ 
    storageService1.delete(rootList[i].name)} 
   } 
  sleep(35000) 
  rootobject = storageService1.container(&quot;#object1#&quot;,true); 
  rootList = storageService1.listAll() 
  FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;this test copy with access condition and storage classes&quot;); 
    src = &quot;uploadfile.txt&quot; 
    blobName = &quot;A/B/key1&quot; 
        uploadRequest = { 
            &quot;srcFile&quot; : src, 
            &quot;blobName&quot; : blobName 
        } 
    uploadResponse = rootobject.uploadFile(uploadRequest); 
 rootList = rootobject.listAll() 
 
 copyRequest = { 
        &quot;source&quot; : &quot;root-object1/A/B/key1&quot;, 
        &quot;storageClass&quot; : &quot;HOT&quot;, 
        &quot;blobName&quot; : &quot;C/D/Key2&quot; 
    } 
 copyResponse = rootobject.copy(copyRequest); 
 rootList = rootobject.listAll() 
 for (i=1;i LTE ArrayLen(rootList.response);i=i+1) 
 { 
  if(rootList.response[i].blobName eq &quot;C/D/Key2&quot;){ 
   writeoutput(rootList.response[i].properties.standardBlobTier & &quot; &quot;)} 
  } 
 writeoutput(copyResponse.status) 
</cfscript>

バージョンの作成

Blob のバージョンを作成します。バージョン管理を有効にして、Blob の以前のバージョンを自動的に維持できます。

詳しくは、BLOB のバージョン管理を参照してください。

シンタックス

createVersion(parameterStruct)

パラメーター

パラメーター

説明

必須

blobName

スナップショットを作成したい Blob の名前。

はい

keyName

Blob に関連付けられたキー。

はい

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  object1=&quot;root-object1&quot; 
  FileWrite(&quot;#ExpandPath('./')#file.txt&quot;,&quot;this test copy with access condition and storage classes&quot;); 
  rootobject = storageService.root(&quot;#object1#&quot;,true); 
  src = &quot;file.txt&quot; 
  key = &quot;Version-1&quot; 
  uploadRequest = { 
    &quot;srcFile&quot; : src, 
    &quot;key&quot; : key 
  } 
  uploadResponse = rootobject.uploadFile(uploadRequest); 
  writeDump(uploadResponse) 
  versionRequest = { 
    &quot;key&quot; : &quot;Version-1&quot; 
  } 
  Version1 = rootobject.createversion(versionRequest); 
  Version2 = rootobject.createversion(versionRequest); 
  writeDump(Version1) 
  writeDump(Version2) 
</cfscript>

Blob に対するポリシーの適用

保存されているアクセスポリシーを使用すると、サーバー側でのサービスレベルの Shared Access Signature(SAS)をさらに制御できます。 

保存されているアクセスポリシーを使用して、署名の開始時刻、有効期限、権限を変更したり、発行済みの署名を取り消したりすることができます。

詳しくは、アクセスポリシーを参照してください。

シンタックス

putPolicy(parameterStruct)

パラメーター

パラメーター

説明

必須

permissions

共有アクセスポリシーで使用可能な権限の配列を指定します。有効な値は次のとおりです。

  • ADD
  • CREATE
  • DELETE
  • LIST
  • READ
  • WRITE

いいえ

sharedAccessStartTime

アクセス権が付与される時間を指定します。

いいえ

sharedAccessExpiryTime

アクセス権の有効期限が切れる時間を指定します。

いいえ

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
     
    // コンテナを作成 
    container = storageService.container(&quot;con002&quot;,true) 
    // 指定されたリクエストオプションと操作コンテキストを使用してコンテナの権限をアップロード。 
    // ポリシー構造体 
    policyStruct = { 
        &quot;publicAccessType&quot; : &quot;OFF&quot;, //BLOB,CONTAINER 
        &quot;sharedAccessPolicies&quot; : { 
            &quot;policyName1&quot; : { 
                    &quot;permissions&quot; : [&quot;READ&quot;, &quot;ADD&quot;], 
                    &quot;sharedAccessExpiryTime&quot; : &quot;31/12/2019&quot;, 
                    &quot;sharedAccessStartTime&quot; : &quot;17/12/2019&quot; 
                }, 
            &quot;policyName2&quot; : { 
                    &quot;permissions&quot; : [&quot;READ&quot;, &quot;ADD&quot;], 
                    &quot;sharedAccessExpiryTime&quot; : &quot;31/12/2019&quot;, 
                    &quot;sharedAccessStartTime&quot; : &quot;17/12/2019&quot; 
                } 
        } 
    } 
    putPolicyResponse=container.putPolicy(policyStruct); 
    writeDump(putPolicyResponse) 
    getPolicyResponse=container.getPolicies() 
    writeOutput(&quot;<br/>&quot; & &quot;List of all policies&quot;) 
    writeDump(getPolicyResponse) 
</cfscript> 

Blob のポリシーの取得

Blob に適用したポリシーを取得します。

シンタックス

getPolicies()

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
     
    // コンテナを作成 
    container = storageService.container(&quot;con002&quot;,true) 
    // 指定されたリクエストオプションと操作コンテキストを使用してコンテナの権限をアップロード。 
    // ポリシー構造体 
    policyStruct = { 
        &quot;publicAccessType&quot; : &quot;OFF&quot;, //BLOB,CONTAINER 
        &quot;sharedAccessPolicies&quot; : { 
            &quot;policyName1&quot; : { 
                    &quot;permissions&quot; : [&quot;READ&quot;, &quot;ADD&quot;], 
                    &quot;sharedAccessExpiryTime&quot; : &quot;31/12/2019&quot;, 
                    &quot;sharedAccessStartTime&quot; : &quot;17/12/2019&quot; 
                }, 
            &quot;policyName2&quot; : { 
                    &quot;permissions&quot; : [&quot;READ&quot;, &quot;ADD&quot;], 
                    &quot;sharedAccessExpiryTime&quot; : &quot;31/12/2019&quot;, 
                    &quot;sharedAccessStartTime&quot; : &quot;17/12/2019&quot; 
                } 
        } 
    } 
    putPolicyResponse=container.putPolicy(policyStruct); 
    writeDump(putPolicyResponse) 
    getPolicyResponse=container.getPolicies() 
    writeOutput(&quot;<br/>&quot; & &quot;List of all policies&quot;) 
    writeDump(getPolicyResponse) 
</cfscript>

Blob のポリシーの削除

Blob に適用したポリシーを削除します。

シンタックス

deletePolicies()

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
     
    // コンテナを作成 
    container = storageService.container(&quot;con002&quot;,true) 
    // 指定されたリクエストオプションと操作コンテキストを使用してコンテナの権限をアップロード。 
    // ポリシー構造体 
    policyStruct = { 
        &quot;publicAccessType&quot; : &quot;OFF&quot;, //BLOB,CONTAINER 
        &quot;sharedAccessPolicies&quot; : { 
            &quot;policyName1&quot; : { 
                    &quot;permissions&quot; : [&quot;READ&quot;, &quot;ADD&quot;], 
                    &quot;sharedAccessExpiryTime&quot; : &quot;31/12/2019&quot;, 
                    &quot;sharedAccessStartTime&quot; : &quot;17/12/2019&quot; 
                }, 
            &quot;policyName2&quot; : { 
                    &quot;permissions&quot; : [&quot;READ&quot;, &quot;ADD&quot;], 
                    &quot;sharedAccessExpiryTime&quot; : &quot;31/12/2019&quot;, 
                    &quot;sharedAccessStartTime&quot; : &quot;17/12/2019&quot; 
                } 
        } 
    } 
    putPolicyResponse=container.putPolicy(policyStruct); 
    writeDump(putPolicyResponse) 
    getPolicyResponse=container.getPolicies() 
    writeOutput(&quot;<br/>&quot; & &quot;List of all policies&quot;) 
    writeDump(getPolicyResponse) 
    // ポリシーを削除 
    try{ 
        deletePolicyResponse=container.deletePolicies() 
        writeOutput(&quot;Policy deleted successfully&quot;) 
        writeDump(deletePolicyResponse) 
    } 
    catch(any e){ 
        writeDump(e) 
    } 
</cfscript>

Shared Access Signature(SAS)の生成

Shared Access Signature(SAS)により、データのセキュリティを損なわずに、ストレージアカウントのリソースに対する安全な委任アクセスが可能になります。SAS を使用すると、クライアントによるデータへのアクセスをきめ細かく制御できます。特に、クライアントからアクセス可能なリソース、それらのリソースに対するクライアントの権限、SAS の有効期間を制御できます。

詳しくは、Azure Blob SAS を参照してください。

シンタックス

generateSas(parameterStruct)

パラメーター

パラメーター

説明

必須

blob

SAS 権限を強制する Blob。

はい

policy

構造体には、次が含まれます。

permissions:共有アクセスポリシーで使用可能な権限の配列を指定します。有効な値は次のとおりです。

  • ADD
  • CREATE
  • DELETE
  • LIST
  • READ
  • WRITE

sharedAccessStartTime:アクセス権が付与される時間を指定します。

sharedAccessExpiryTime:アクセス権の有効期限が切れる時間を指定します。

はい

headers

構造体には、次が含まれます。

  • cacheControl
  • contentDisposition
  • contentEncoding
  • contentLanguage
  • contentType
  • groupPolicyIdentifier
  • ipRange
  • protocols: HTTPS_HTTP | HTTPS_ONLY

いいえ

<cfscript> 
  // Shared Access Signature(SAS)により、データのセキュリティを損なわずに、 
  // ストレージアカウントのリソースに対する安全な委任アクセスが可能になります。 
  // SAS を使用すると、クライアントによるデータへのアクセスをきめ細かく制御できます。 
  // 特に、クライアントからアクセス可能なリソース、それらのリソースに対するクライアントの権限、 
  // SAS の有効期間を制御できます。 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  object1=&quot;root-object1&quot; 
  root = storageService1.container(&quot;#object1#&quot;,true) 
  FileWrite(&quot;#ExpandPath('./')#file.txt&quot;,&quot;Sgt.Pepper's Lonely Hearts Club Band&quot;) 
  src = &quot;file.txt&quot; 
  blobName = &quot;key1&quot; 
  uploadRequest = { 
    &quot;srcFile&quot; : src, 
    &quot;blobName&quot; : blobName 
  } 
  uploadResponse = root.uploadFile(uploadRequest) 
  expdate= DatePart(&quot;d&quot;,now())+2; 
  month= DatePart(&quot;m&quot;,now()) 
  year= DatePart(&quot;yyyy&quot;,now()) 
  startdate=DatePart(&quot;d&quot;,now()); 
  sasRequest ={ 
      &quot;blobName&quot; :  &quot;key1&quot;, 
      &quot;policy&quot; : { 
                  &quot;permissions&quot; : [&quot;READ&quot;], 
                  &quot;sharedAccessExpiryTime&quot; : &quot;#month#/#Expdate#/#year#&quot;, 
                  &quot;sharedAccessStartTime&quot; : &quot;#month#/#startdate#/#year#&quot; 
              } 
  } 
    sharedAccessSignature = root.generateSas(sasRequest); 
    writedump(sharedAccessSignature) 
</cfscript> 

ディレクトリのアップロード

Blob のディレクトリをアップロードします。また、一括アップロードを実行することもできます。

シンタックス

uploadDirectory(parameterStruct)

パラメーター

パラメーター

説明

必須

prefix

指定された接頭辞で始まるディレクトリのみを選択します。

いいえ

directoryPath

アップロード元のディレクトリ。

はい

isIncludeSubDirectories

true または false。メインのフォルダー内にサブディレクトリを含めるかどうかを指定します。

いいえ

<cfscript> 
  storageService = getCloudService(application.blobCred, application.blobConf) 
  object1=&quot;root-object1&quot; 
  //writeDump(rootList) 
  FileWrite(&quot;#ExpandPath('./')#/uploadfile.txt&quot;,&quot;This txt file is used to upload and download functionality for azure blob storage.&quot;) 
  src = &quot;uploadfile.txt&quot; 
  destination = &quot;download.txt&quot; 
  blobName = &quot;key1&quot; 
  uploadRequest = { 
          &quot;srcFile&quot; : src, 
          &quot;blobName&quot; : blobName 
        } 
  root = storageService.container(&quot;#object1#&quot;,true); 
  uploadResponse = root.uploadFile(uploadRequest); 
  writeDump(uploadResponse) 
</cfscript> 

リースの獲得

Blob のリースを使用すると、Blob に対する所有権を付与できます。リースを付与されると、Blob を更新したり Blob を削除したりできます。Blob がリースされると、他のプロセスによる読み取りはできますが、更新しようとすると失敗します。

詳しくは、Blob コンテナ - リースを参照してください。

シンタックス

acquireLease(parameterStruct)

パラメーター

パラメーター

説明

必須

leaseTimeInSeconds

リースの継続時間。

はい

proposedLeaseID

Blob に作成されたリースの ID。

いいえ

<cfscript> // リースを獲得し、リース獲得ステータスを確認storageService = getCloudService(application.blobCred, application.blobConf) 
  object1=&quot;root-object1&quot; 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  FileWrite(&quot;#ExpandPath('./')#/uploadfile.txt&quot;,&quot;Coldfusion2020 lease-related operation.&quot;); 
    src = &quot;uploadfile.txt&quot; 
    blobName = &quot;key1&quot; 
    uploadRequest = { 
          &quot;srcFile&quot; : src, 
          &quot;blobName&quot; : blobName 
      } 
  uploadResponse = root.uploadFile(uploadRequest) 
  acquireLeaseRequest = { 
        &quot;blobName&quot;:blobName, 
        &quot;leaseDurationInSeconds&quot;: 15, 
        &quot;proposedLeaseId&quot;: &quot;lease01&quot; 
        } 
 
  acqLeaseResponse=root.acquireLease(acquireLeaseRequest) 
  writeDump(acqLeaseResponse) 
</cfscript>

リースの更新

Blob に対するリースを獲得すると、リースを更新できます。

シンタックス

renewLease(parameterStruct)

パラメーター

パラメーター

説明

必須

leaseTimeInSeconds

リースを更新するまでの継続時間。

はい

proposedLeaseID

リースの ID。

いいえ

<cfscript> 
  // リースを獲得し、リース獲得ステータスを確認。 
  object1=&quot;root-object1&quot; 
  storageService1 = getCloudService(application.blobCred, application.blobConf) 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  // リースを獲得し、リース獲得ステータスを確認。 
  Dirpath=#ExpandPath( &quot;.&quot;)#&&quot;/&quot; 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;Coldfusion2020 lease related operation&quot;); 
  src = &quot;uploadfile.txt&quot; 
  blobName = &quot;key1&quot; 
  uploadRequest = { 
          &quot;srcFile&quot; : src, 
          &quot;blobName&quot; : blobName 
  } 
  uploadResponse = root.uploadFile(uploadRequest) 
  acquireLeaseRequest = { 
        &quot;blobName&quot;:blobName, 
        &quot;leaseDurationInSeconds&quot;: 15, 
        &quot;proposedLeaseId&quot;: &quot;dddddddddddddddddddddddddddddddd&quot; 
        } 
 
  root.acquireLease(acquireLeaseRequest) 
  // 既存のリースを更新 
  sleep(16000) 
  renewLeaseRequest = { 
      &quot;blobName&quot;:blobName, 
      &quot;accessCondition&quot; : { &quot;leaseID&quot; :&quot;dddddddddddddddddddddddddddddddd&quot;  } 
      } 
  renewLeaseResponse=root.renewLease(renewLeaseRequest) 
  writeDump(renewLeaseResponse) 
</cfscript>

リースの変更

Blob に対するリースを獲得すると、リースを更新できます。

シンタックス

changeLease(parameterStruct)

パラメーター

パラメーター

説明

必須

leaseTimeInSeconds

リースを変更するまでの継続時間。

はい

proposedLeaseID

リースの ID。

いいえ

<cfscript> 
  // リースを獲得し、リース獲得ステータスを確認。 
  object1=&quot;root-object1&quot; 
  storageService1 = getCloudService(application.blobCred, application.blobConf) 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  // リースを獲得し、リース獲得ステータスを確認。 
  Dirpath=#ExpandPath( &quot;.&quot;)#&&quot;/&quot; 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;Coldfusion 2020 lease related operation&quot;); 
    src = &quot;uploadfile.txt&quot; 
    blobName = &quot;key1&quot; 
    uploadRequest = { 
          &quot;srcFile&quot; : src, 
          &quot;blobName&quot; : blobName 
      } 
  uploadResponse = root.uploadFile(uploadRequest) 
 
  // リースを獲得 
  acquireLeaseRequest = { 
        &quot;blobName&quot;:blobName, 
        &quot;leaseDurationInSeconds&quot;: 15, 
        &quot;proposedLeaseId&quot;: &quot;dddddddddddddddddddddddddddddddd&quot; 
        } 
 
  root.acquireLease(acquireLeaseRequest) 
  // 既存のリースを変更 
    changeLeaseRequest = { 
        &quot;blobName&quot;:blobName, 
        &quot;proposedLeaseId&quot;: &quot;ddddddddddddddcccccccccccccccccc&quot;, 
        &quot;accessCondition&quot; : { &quot;leaseID&quot; :&quot;ddddddddddddddddcddddddddddddddd&quot;  } 
        } 
  changeleaseid=root.changeLease(changeLeaseRequest) 
  writeDump(changeleaseid) 
</cfscript>

リースの解放

以前獲得した Blob のリースを変更できます。

シンタックス

releaseLease(parameterStruct)

パラメーター

パラメーター

説明

必須

blobPath

リースを更新する必要がある Blob のパス。

はい

leaseID

リースの ID。

いいえ

<cfscript> 
  // リースを獲得し、リース獲得ステータスを確認。 
  object1=&quot;root-object1&quot; 
  storageService1 = getCloudService(application.blobCred, application.blobConf) 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  // リースを獲得。 
  Dirpath=#ExpandPath( &quot;.&quot;)#&&quot;/&quot; 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;Coldfusion2020 lease related operation&quot;); 
    src = &quot;uploadfile.txt&quot; 
    blobName = &quot;key1&quot; 
    uploadRequest = { 
          &quot;srcFile&quot; : src, 
          &quot;blobName&quot; : blobName 
      } 
  uploadResponse = root.uploadFile(uploadRequest) 
  acquireLeaseRequest = { 
        &quot;blobName&quot;:blobName, 
        &quot;leaseDurationInSeconds&quot;: 60, 
        &quot;proposedLeaseId&quot;: &quot;dddddddddddddddddddddddddddddddd&quot; 
        } 
 
  root.acquireLease(acquireLeaseRequest) 
  // 既存のリースを解放 
  changeLeaseRequest = { 
      &quot;blobName&quot;:blobName, 
      &quot;accessCondition&quot; : { &quot;leaseID&quot; :&quot;dddddddddddddddddddddddddddddddd&quot;  } 
  } 
  releaseResponse=root.releaseLease(changeLeaseRequest) 
  writeDump(releaseResponse) 
</cfscript>

リースの停止

リースを終了できます。現在のリース期間が終了するまで、他のユーザーは新しいリースを獲得できません。

シンタックス

breakLease(parameterStruct)

パラメーター

パラメーター

説明

必須

blobPath

リースを終了する必要がある Blob のパス。

はい

leaseID

リースの ID。

いいえ

<cfscript> 
  // リースを獲得し、リース獲得ステータスを確認。 
  object1=&quot;root-object1&quot; 
  storageService1 = getCloudService(application.blobCred, application.blobConf) 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  // リースを獲得。 
  Dirpath=#ExpandPath( &quot;.&quot;)#&&quot;/&quot; 
  root = storageService1.container(&quot;#object1#&quot;,true); 
  FileWrite(&quot;#Dirpath#uploadfile.txt&quot;,&quot;Coldfusion2020 lease related operation&quot;); 
  src = &quot;uploadfile.txt&quot; 
  blobName = &quot;key1&quot; 
  uploadRequest = { 
        &quot;srcFile&quot; : src, 
        &quot;blobName&quot; : blobName 
    } 
  uploadResponse = root.uploadFile(uploadRequest) 
  acquireLeaseRequest = { 
      &quot;blobName&quot;:blobName, 
      &quot;leaseDurationInSeconds&quot;: 60, 
      &quot;proposedLeaseId&quot;: &quot;dddddddddddddddddddddddddddddddd&quot; 
      } 
 
  root.acquireLease(acquireLeaseRequest) 
  // 既存のリースを停止 
    breakleaserequest = { 
        &quot;blobName&quot;:blobName, 
        &quot;accessCondition&quot; : { &quot;leaseID&quot; :&quot;dddddddddddddddddddddddddddddddd&quot;  } 
        } 
  breakLeaseResponse=root.breakLease(breakleaserequest) 
  writeDump(breakLeaseResponse) 
</cfscript>

クライアント側の暗号化

ColdFusion では、Blob のアップロード時に RSA 暗号化キーを使用できます。同じ Blob をダウンロードする間、同じ RSA 暗号化キーをパスワードと共に提供する必要があります。

Azure Storage に保存されたすべてのデータは、アップロード前に自動的に暗号化され、取得中に復号化されます。暗号化および復号化は、ユーザーに対して完全に透過的です。すべてのデータが 256 bit AES 暗号化を使用して暗号化されます。デフォルトで暗号化が有効なので、アプリケーションに対して変更を加える必要はありません。

getKeyPairfromkeystore

お使いのコンピューターにあるキーストアからキーペアをインポートします。

JKS またはキーストアは、暗号化されたセキュリティファイルです。暗号化キーまたは証明書のセットをバイナリ形式で保存するのに使用され、開くのにパスワードが必要です。

シンタックス

getKeyPairfromkeystore(parameterStruct)

パラメーター

パラメーター

説明

keystore

キーストアまたは JKS ファイルの位置。

keystorePassword

JKS ファイルのパスワード。

keypairPassword

RSA キーペアのパスワード。

keystoreAlias

JKS キーストアのエイリアス名。

keyStoreType

JKS または PKCS12。

例 - P12 キー

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    keyPair2 = getKeyPairfromkeystore({  
        &quot;keystore&quot;: ExpandPath(&quot;blobkey.p12&quot;),  
        &quot;keystorePassword&quot;: &quot;changeit&quot;  
    }) 
    // ルートを作成 
    rootobject = storageService.root(&quot;root001&quot;,true); 
    uploadRequestsstruct ={ 
        &quot;object&quot; : &quot;Encryption 001&quot;, 
        &quot;key&quot; : &quot;key001&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot; : { 
            &quot;encryption&quot;:{  
                &quot;keypair&quot;: keyPair2,  
                &quot;kid&quot;: &quot;sample&quot;  
            } 
        } 
    } 
    uploadResponse = rootobject.uploadObject(uploadRequest=uploadRequestsstruct) 
    writeDump(uploadResponse) 
</cfscript>

例 - JKS キー

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    // ルートを作成 
    rootobject = storageService.root(&quot;root002&quot;,true) 
    // jks 構造体を作成 
    keyPair2 = getKeyPairfromkeystore({  
        &quot;keystore&quot;: ExpandPath(&quot;blobkey.jks&quot;),  
        &quot;keystorePassword&quot;: &quot;changeit&quot;,  
        &quot;keypairPassword&quot;: &quot;changeit&quot;,  
        &quot;keystoreAlias&quot;: &quot;alias3&quot;,  
        &quot;keyStoreType&quot;: &quot;jks&quot;  
    }) 
    // アップロード構造体を作成 
    uploadRequestsstruct ={ 
        &quot;object&quot; : &quot;Object 002&quot;, 
        &quot;key&quot; : &quot;key&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot; : { 
            &quot;encryption&quot;:{ &quot;keypair&quot;: keyPair2, &quot;kid&quot;: &quot;sample&quot; }} 
        } 
    uploadResponse = rootobject.uploadObject(uploadRequest=uploadRequestsstruct) 
    writeDump(uploadResponse) 
</cfscript>

P12 キーを使用したオブジェクトのダウンロード

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    // キーペア構造体を作成 
    keyPair2 = getKeyPairfromkeystore({  
        &quot;keystore&quot;: ExpandPath(&quot;blobkey.p12&quot;),  
        &quot;keystorePassword&quot;: &quot;changeit&quot;  
    }) 
    // ルートを作成 
    rootobject = storageService.root(&quot;root003&quot;,true); 
    // アップロード構造体 
    uploadRequestsstruct ={ 
            &quot;object&quot; : &quot;Test string azureb blob for encryption&quot;, 
            &quot;key&quot; : &quot;key&quot;, 
            &quot;type&quot; :&quot;json&quot;, 
            &quot;options&quot; : { 
                &quot;encryption&quot;:{ &quot;keypair&quot;: keyPair2, &quot;kid&quot;: &quot;sample&quot; }} 
            } 
    uploadResponse = rootobject.uploadObject(uploadRequest=uploadRequestsstruct); 
    // ダウンロード構造体 
    downloadStruct = { 
        &quot;key&quot; : &quot;key&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot; : {&quot;encryption&quot;:{ &quot;keypair&quot;: keyPair2, &quot;kid&quot;: &quot;sample&quot; }} 
    } 
    try{ 
        downloadResponse =rootobject.downloadObject(downloadStruct) 
        if(downloadResponse.object==&quot;Test string azureb blob for encryption&quot; &&  
           uploadResponse.status==&quot;success&quot; && 
           downloadResponse.status==&quot;success&quot;) 
        writeOutput(&quot;Object downloaded successfully&quot;) 
    } 
    catch(any e) 
    { 
        writeDump(e) 
    } 
</cfscript>

JKS キーを使用したオブジェクトのダウンロード

<cfscript> 
    storageService = getCloudService(application.blobCred, application.blobConf) 
    // ルートを作成 
    rootobject = storageService.root(&quot;root004&quot;,true) 
    // キーペア構造体を作成 
    keyPair2 = getKeyPairfromkeystore({  
        &quot;keystore&quot;: ExpandPath(&quot;blobkey.jks&quot;),  
        &quot;keystorePassword&quot;: &quot;changeit&quot;,  
        &quot;keypairPassword&quot;: &quot;changeit&quot;,  
        &quot;keystoreAlias&quot;: &quot;alias3&quot;,  
        &quot;keyStoreType&quot;: &quot;jks&quot;  
    }) 
    // オブジェクトアップロード構造体を作成 
    uploadRequestsstruct ={ 
        &quot;object&quot; : &quot;Test string azureb blob for encryption&quot;, 
        &quot;key&quot; : &quot;key&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot; : { 
            &quot;encryption&quot;:{ &quot;keypair&quot;: keyPair2, &quot;kid&quot;: &quot;sample&quot; }} 
        } 
    uploadResponse = rootobject.uploadObject(uploadRequest=uploadRequestsstruct); 
    // オブジェクトダウンロード構造体を作成    
    downloadObject = { 
        &quot;key&quot; : &quot;key&quot;, 
        &quot;type&quot; :&quot;json&quot;, 
        &quot;options&quot; : { 
            &quot;encryption&quot;:{ &quot;keypair&quot;: keyPair2, &quot;kid&quot;: &quot;sample&quot; }} 
    } 
    try{ 
        downloadResponse =rootobject.downloadObject(downloadObject) 
        if( 
            downloadResponse.object==&quot;Test string azureb blob for encryption&quot; &&  
            uploadResponse.status==&quot;success&quot; && 
            downloadResponse.status==&quot;success&quot;) 
        writeOutput(&quot;Object downloaded successfully&quot;) 
    } 
    catch(any e) 
    { 
        writeDump(e); 
    } 
</cfscript>

ブロックのファイルのアップロード

blockUpload メソッドを使用して、大量のデータのアップロードを最適化します。ブロック Blob は、ブロックで構成され、各ブロックはブロック ID で識別されます。

詳しくは、ブロック Blob を参照してください。

シンタックス

blockUpload(parameterStruct)

パラメーター

パラメーター

説明

必須

blockId

アップロードする Blob のブロックの ID。

はい

blobName

アップロードする Blob の名前。

はい

srcFile

アップロードされるファイルのパス。

はい

<cfscript> 
 
try{ 
   blobAccount = getcloudService(application.blobCred, application.blobConf); 
    rootList = blobAccount.listAll() 
    for (i=1;i LTE ArrayLen(rootList);i=i+1) 
  { 
       if( (rootList[i].name eq &quot;testcontainer&quot;) ){ 
       blobAccount.delete(rootList[i].name) 
             sleep(35000) 
        } 
  } 
   
    root = blobAccount.container(&quot;testcontainer&quot;, true); 
    blobname = &quot;Suite.zip&quot; 
        createPartFileRequest = {  
        &quot;srcFile&quot;:blobname, 
        &quot;blockSizeInBytes&quot;: 102400, 
        &quot;destinationDirectory&quot;: &quot;Destination&quot; 
        } 
    respt = root.createPartFiles(createPartFileRequest) 
    blockIds = ArrayNew(1); 
    blockIdItr = &quot;ddd&quot; 
    count=1 
    for(partFile in respt[&quot;partFiles&quot;]) { 
        bid=&quot;&quot;&(1000 + count)  //toBase64(URLEncodedFormat(&quot;ddd&quot;&count)) 
        
        structUpload = { 
            &quot;blockId&quot;: bid, 
            &quot;blobName&quot;: blobName, 
            &quot;srcFile&quot;: partFile 
        } 
        respt = root.blockUpload(structUpload); 
        
        arrayAppend(blockIds, bid) 
        count=count+1 
    } 
  
 commitBlockList = { 
        &quot;blockIds&quot;: blockIds, 
        &quot;blobName&quot;: blobName 
    } 
    respt = root.commitBlockList(commitBlockList); 
     if(respt.status==&quot;SUCCESS&quot;) 
            writeOutput(&quot;Successful upload!&quot;) 
} 
 
catch(any e) 
{ 
    writeDump(e) 
} 
</cfscript>

Blob メタデータのアップロード

このメソッドは、Blob のメタデータの詳細をアップロードするのに使用されます。

シンタックス

uploadMetadata(parameterStruct)

パラメーター

パラメーター

説明

必須

key

Blob に関連付けられたキー。

はい

metadata

次を含む構造体。

  • details

はい

<cfscript>  
try{ 
  storageService1 = getcloudService(this.blobCred, this.blobConf); 
  rootList = storageService1.listAll() 
   
  for (i=1;i LTE ArrayLen(rootList);i=i+1) 
   { 
   if( (i GT 0 )){ 
    storageService1.delete(rootList[i].name)} 
   } 
  sleep(35000) 
  rootobject = storageService1.root(&quot;#object1#&quot;,true); 
  FileWrite(&quot;#Dirpath#UploadTest.txt&quot;,&quot;Test1.txt uploaded&quot;) 
    src = &quot;UploadTest.txt&quot; 
    key = &quot;A/B/Test1&quot; 
        uploadRequest = { 
            &quot;srcFile&quot; : src, 
            &quot;key&quot; : key 
        } 
    uploadResponse = rootobject.uploadFile(uploadRequest); 
 
  uploadMetadata = { 
    &quot;key&quot; : &quot;A/B/Test1&quot;, 
    &quot;metadata&quot; : { 
      &quot;Details&quot; : &quot;Test1.txt uploaded&quot; 
      } 
     } 
  response =rootobject.uploadMetadata(uploadMetadata); 
  writeoutput(response.status&&quot; &quot;); 
  blobStruct = { 
     &quot;prefix&quot; : &quot;&quot;, 
     &quot;isFlatListing&quot; : &quot;true&quot;, 
     &quot;listingDetails&quot; :[&quot;METADATA&quot;] 
      } 
 rootList = rootobject.listAll(blobStruct) 
 if(rootList.response[1].metadata[&quot;Details&quot;] EQ &quot;Test1.txt uploaded&quot;) 
 { 
 writeoutput(&quot;Uploaded successfully&quot;) 
 } 
} 
catch(any e) 
{ 
 writedump(e); 
} 
</cfscript>

複数のブロックへのファイルの分割

createPartFiles メソッドは、ファイルを複数のブロックでアップロードする際に、ファイルを複数のブロックに分割するのに使用されます。

シンタックス

createPartFiles(parameterStruct)

パラメーター

  • srcFile
  • blockSizeInBytes
  • destinationDirectory

<cfscript> 
 
try{ 
   blobAccount = getcloudService(application.blobCred, application.blobConf); 
    rootList = blobAccount.listAll() 
    for (i=1;i LTE ArrayLen(rootList);i=i+1) 
  { 
       if( (rootList[i].name eq &quot;testcontainer&quot;) ){ 
       blobAccount.delete(rootList[i].name) 
             sleep(35000) 
        } 
  } 
   
    root = blobAccount.container(&quot;testcontainer&quot;, true); 
    blobname = &quot;Suite.zip&quot; 
        createPartFileRequest = {  
        &quot;srcFile&quot;:blobname, 
        &quot;blockSizeInBytes&quot;: 102400, 
        &quot;destinationDirectory&quot;: &quot;Destination&quot; 
        } 
    respt = root.createPartFiles(createPartFileRequest) 
    blockIds = ArrayNew(1); 
    blockIdItr = &quot;ddd&quot; 
    count=1 
    for(partFile in respt[&quot;partFiles&quot;]) { 
        bid=&quot;&quot;&(1000 + count)  //toBase64(URLEncodedFormat(&quot;ddd&quot;&count)) 
        
        structUpload = { 
            &quot;blockId&quot;: bid, 
            &quot;blobName&quot;: blobName, 
            &quot;srcFile&quot;: partFile 
        } 
        respt = root.blockUpload(structUpload); 
        
        arrayAppend(blockIds, bid) 
        count=count+1 
    } 
  
 commitBlockList = { 
        &quot;blockIds&quot;: blockIds, 
        &quot;blobName&quot;: blobName 
    } 
    respt = root.commitBlockList(commitBlockList); 
     if(respt.status==&quot;SUCCESS&quot;) 
            writeOutput(&quot;Successful upload!&quot;) 
} 
 
catch(any e) 
{ 
    writeDump(e) 
} 
</cfscript>

すべてのコミットブロックのリスト表示

commitBlockList メソッドは、すべてのコミットブロックをリスト表示します。

シンタックス

createPartFiles(parameterStruct)

パラメーター

  • blockIds
  • blobName

<cfscript> 
try{ 
   blobAccount = getcloudService(application.blobCred, application.blobConf); 
    rootList = blobAccount.listAll() 
    for (i=1;i LTE ArrayLen(rootList);i=i+1) 
  { 
       if( (rootList[i].name eq &quot;testcontainer&quot;) ){ 
       blobAccount.delete(rootList[i].name) 
             sleep(35000) 
        } 
  } 
   
    root = blobAccount.container(&quot;testcontainer&quot;, true); 
    blobname = &quot;perfSuite.zip&quot; 
    createPartFileRequest = {  
        &quot;srcFile&quot;:blobname, 
        &quot;blockSizeInBytes&quot;: 102400, 
        &quot;destinationDirectory&quot;: &quot;Destination&quot; 
        } 
    respt = root.createPartFiles(createPartFileRequest) 
    blockIds = ArrayNew(1); 
    blockIdItr = &quot;ddd&quot; 
    count=1 
    for(partFile in respt[&quot;partFiles&quot;]) { 
        bid=&quot;&quot;&(1000 + count) //toBase64(URLEncodedFormat(&quot;ddd&quot;&count)) 
        
        structUpload = { 
            &quot;blockId&quot;: bid, 
            &quot;blobName&quot;: blobName, 
            &quot;srcFile&quot;: partFile 
        } 
        respt = root.blockUpload(structUpload); 
        
        arrayAppend(blockIds, bid) 
        count=count+1 
    } 
  
 commitBlockList = { 
        &quot;blockIds&quot;: blockIds, 
        &quot;blobName&quot;: blobName 
    } 
    respt = root.commitBlockList(commitBlockList); 
     if(respt.status==&quot;SUCCESS&quot;) 
            writeOutput(&quot;Uploaded&quot;) 
} 
 
catch(any e) 
{ 
    writeDump(e) 
} 
</cfscript>
アドビのロゴ

アカウントにログイン