[
KB エクスプローラー ] で、 [
GeneXus ] > [ Common ] > [ Configuration モジュール ] を選択し、
StorageProviderType という名前の
ドメインを探します。
このドメインに基づいて変数を定義することで、メソッドを使用してアプリケーションのグローバルデータ (あらゆるタイプのファイル) を外部ストレージで管理できるようになります。外部ストレージは、Amazon、Azure、Google、IBM Cloud のいずれかになります (使用可能な外部ストレージは、
[ Storage Provider ] プロパティの値と同じです)。
ファイルを外部ストレージに保存し、操作が成功した場合に True を返します。
外部ストレージ内のファイルの参照 (
File データタイプ) を取得する場合は、OutUploadedFile パラメーターを使用できます。ストレージ内のファイルの URI を取得するために GetURI() を使用します。
ファイルを外部ストレージにプライベートとして保存し、操作が成功した場合に True を返します。
ファイルは署名され、バケットにアップロードされます。ファイルに署名をするために使用される証明書は、プロバイダーによって生成されます。
戻り値 |
Boolean |
パラメーター |
FileFullPath:Character, [ StorageObjectFullName:Character ] , [ OutUploadedFile:File ] , [ OutMessages:Messages ] |
外部ストレージ内のファイルの参照 (
File データタイプ) を取得するには、OutUploadedFile パラメーターを使用できます。ストレージ内のファイルの URI を取得するために GetURI() を使用します。
外部ストレージにあるファイルの参照 (
File データタイプ) を取得します。操作に成功した場合に True が返されます。
戻り値 |
Boolean |
パラメーター |
StorageObjectFullName:Character, OutExternalFile:File, [ OutMessages:Messages ] |
GetPrivate
外部ストレージにあるファイルの参照 (
File データタイプ) を取得します。操作に成功した場合に True が返されます。
戻り値 |
Boolean |
パラメーター |
StorageObjectFullName:Character, OutExternalFile:File, ExpirationMinutes:Numeric, [ OutMessages:Messages ] |
OutExternalFile はバケットから取得したファイルであり、URL が格納されます。
取得された URL は、ExpirationMinutes パラメーターで指定した期間内だけ有効になります。
外部ファイルをアプリケーションサーバーにダウンロードし、ローカルに保存します。操作に成功した場合に True が返されます。
戻り値 |
Boolean |
パラメーター |
StorageObjectFullName:Character, OutLocalFile:File, [ OutMessages:Messages ] |
OutLocalFile を使用すると、外部ファイルをダウンロードした後の保存先を定義できます。
(Azure Storage Provider にのみ適用)
プライベートの外部ファイルをアプリケーションサーバーにダウンロードし、ローカルに保存します。操作に成功した場合に True が返されます。
戻り値 |
Boolean |
パラメーター |
StorageObjectFullName:Character, OutLocalFile:File, [ OutMessages:Messages ] |
OutLocalFile
を使用すると、外部ファイルをダウンロードした後の保存先を定義できます。
外部ストレージ (クラウド) 内のディレクトリー (
Directory データタイプ) を取得します。
戻り値 |
Boolean |
パラメーター |
StorageDirectoryFullName:Character, OutExteralDirectory:Directory, [ OutMessages:Messages ] |
Amazon では次の形式になります: <bucketname>: Directory
例: genexuss3test:\petsFolder\
- StorageObjectFullName は、バケット内にあるファイルのフルネームです (フォルダと拡張子が含まれます)。
- Messages オブジェクトは、次のフォーマットを持つ Messages.Message のコレクションです:
- Id: エラーコードは、the Storage Provider (Amazon S3, Google など) によって返されます。
- Type: (0 = 警告、1 = エラー)
- Description: エラーデスクリプションは、Storage Provider によって返されます。
エラーがない場合には、&Messages コレクションは空です。
外部ストレージに手動でファイルをアップロードする必要があるとします。外部ストレージにアップロードするファイルは、事前にアプリケーションサーバーにアップロードされているものとします。
まず、StorageProvider データタイプの
&Storage 変数を定義します。
外部ストレージに保存するファイルは、元はサーバーのファイルシステムに配置されているため、
File データタイプを使用して絶対パスを取得します。
Storage Provider API の
Upload メソッドを使用することで、アップロードするファイルのフルネーム (フォルダと拡張子を含む) を取得できます。
&Storage = new() //コードのこの行は、ナレッジベースで設定されている外部ストレージの新しいインスタンスを作成
&File.Source ="catToUpload.jpg" //&File は File データタイプ
&FileFullPath = &File.GetAbsoluteName()
&StorageObjectFullName = "petsFolder/cat.jpg"
if ( &Storage.Upload(&FileFullPath, &StorageObjectFullName, &UploadedFile, &Messages) )
&URL = &UploadedFile.GetURI() //アップロードされたファイルの &URL
else
for &Message in &Messages
msg(&Message.Description, status)
endfor
endif
この例では、バケット名は「genexuss3test」で、「
petsFolder」というフォルダがバケット内に作成され、アップロードしたファイルがそこに保存されます。
ここでは、外部ストレージに配置されているファイルの URI を取得します。&ExternalFile は
File データタイプです。
&StorageObjectFullName = "petsFolder/cat.jpg"
if ( &Storage.Get(&StorageObjectFullName, &ExternalFile, &Messages) )
msg(format("The external URI of the image is : %1", &ExternalFile.GetURI()), status)
else
for &Message in &Messages
msg(&Message.Description, status)
endfor
endif
次の値が返されます: https://genexuss3test.s3.amazonaws.com/petsFolder/cat.jpg
この例は、外部ファイルをサーバーのファイルシステムにダウンロードするコードを示しています。
&LocalFile は File データタイプです。
&StorageObjectFullName = "petsFolder/cat.jpg"
&LocalFile.Source = "catDownloadFromStorage.jpg"
if ( &Storage.Download(&StorageObjectFullName, &LocalFile, &Messages) )
msg(format("Image downloaded to : %1", &LocalFile.GetAbsoluteName()), status)
else
for &Message in &Messages
msg(&Message.Description, status)
endfor
endif
ここでは、外部ストレージフォルダからすべてのファイルを削除します。
&ExternalDirectory は
Directory データタイプです。
ここでは、ファイルは外部ファイルとして扱われます。
&DirectoryFullName = "petsFolder"
if ( &Storage.GetDirectory(&DirectoryFullName, &ExternalDirectory, &Messages) )
for &ExternalFile in &ExternalDirectory.GetFiles()
&ExternalFile.Delete()
endfor
else
msg(format("The directory %1 couldn't be obtained", &DirectoryFullName))
for &Message in &Messages
msg(&Message.Description, status)
endfor
endif
&StorageObjectFullName = "folder/catToUpload.jpg"
&found = &StorageProvider.Get(&StorageObjectFullName, &File, &outMessages)
If &found
&File.Delete()
Else
Log.Error(!"File not Found")
EndIf
&Storage = new()
&File.Source = "catToUpload.jpg"
&FileFullPath = &File.GetAbsoluteName()
&StorageObjectFullName = "Private/cat1.jpg"
if (&Storage.UploadPrivate(&FileFullPath, &StorageObjectFullName) )
msg("File has been successfuly uploaded", status)
else
for &Message in &Messages
msg(&Message.Description, status)
endfor
endif
&Storage.GetPrivate(&StorageObjectFullName,&UploadedFile,11)
msg(&UploadedFile.GetURI(), status) //URL は、11 分間有効
Storage Provider API サンプルから、すべてのサンプルをダウンロードできます。
「
Configuration.ExternalStorage 外部オブジェクト」を参照してください。
Storage Provider API は、
Java、
.NET ジェネレーターおよび
[ Storage Provider ] プロパティでサポートされているすべてのストレージプロバイダーで使用できます。
例外: UploadPrivate と GetPrivate は、
GeneXus 15 Upgrade 3 以降、.NET ジェネレーターと Amazon S3 でのみで使用できます。それらは、
GeneXus 15 Upgrade 7 以降、.NET ジェネレーター、Amazon S3 および Microsoft Azure 用の Java ジェネレーターで使用できます。これらのメソッドは、今後のアップグレードでその他のプラットフォームで使用可能になります。