はじめに
/n software の Cloud Storage Integrator は、Amazon S3 や Google Drive、Dropbox、Box.com、OneDrive などのクラウド ストレージ サービスにアクセスできる、使い勝手のよいコンポーネントを提供します。
このツールキットは、個々のサービスごとのコンポーネントと、複数のサービスにアクセスできる、統一された API を備えた CloudStorage
コンポーネントから成っています。
Cloud Storage Integrator ではまた、クラウドに保存されるデータを保護するため、強力な暗号化サポートも提供しています。
前回の Box.com コンポーネントに続き、今回は FTP のように簡単なインターフェイスで Box、Dropbox、GoogleDrive、OneDrive および SharePoint Online へファイルをアップロード/ダウンロードできるストレージ サービス、CloudStorage 専用コンポーネント の使用方法について説明します。
CloudStorage
CloudStorage コンポーネントは、あらゆるサービスを扱う単一のインターフェイスを提供します。単一の API で複数のプロバイダーをサポートすることにより、コードを一度書くだけで、複数のサービスをサポートします。現在このコンポーネントでは、以下のプロバイダーをサポートします。
- Amazon S3
- Azure Blob
- Box.com
- DropBox
- Google Drive
- Microsoft OneDrive
- SharePoint Online
このコンポーネントでは、簡単なファイルとフォルダの管理および暗号化をサポートします。ファイルのアップロードおよびダウンロード、強力な暗号化のサポート、フォルダの作成、そしてその他多くの機能を備えています。
まず、アカウントを開設して、アプリケーションの登録を行います。このプロセスについては、個々のサービス プロバイダーのドキュメントを参照してください。
認証
以下のプロバイダーは、OAuth 2.0 を使用して認証を行います。
- Box
- DropBox
- Google Drive
- Microsoft OneDrive
toolkit に含まれる OAuth コンポーネント、またはその他の OAuth 実装を使用して認証を行い、認証文字列を取得します。まず、以下のような認証文字列を取得します。
[csharp light=”true”]Bearer ya29.AHES6ZSZEJzATdZYjeihDn5W-VrXSsxEZu5p0pclxGdKKQ[/csharp]
操作を施行する前に、認証プロパティにこの値を割り当てます。サポートされるスコープ値および OAuth 認証の詳細に関するこの特定のサービスについては、Box.com のドキュメントを参照してください。
Amazon S3 で認証を行う場合、Account.AmazonS3AccessKey
および Account.AmazonS3SecretKey
を設定します。SharePoint Online で認証を行う場合、Account.SharePointURL
、Account.SharePointUser
、および Account.SharePointPassword
を設定します。Microsoft Azure Blob サービスで認証を行う場合、Account.AzureBlobAccount
および Account.AzureBlobAccessKey
を設定します。
プロバイダーの選択
プロバイダーの特定には、ServiceProvider
を設定します。これにより、実行されるサービス要求がコンポーネントに指示されます。
ファイルおよびフォルダのリスティング
ListDirectory
は、RemotePath
によってパスが指定されたファイルおよびフォルダをリストします。ファイルマスクは、RemoteFile
内でオプションとして提供されることがあります。
ディレクトリ エントリは、DirList
イベントまたは DirList
プロパティを通して提供されます。
[csharp light=”true”]cloudstorage.RemotePath = "MyFolder";
cloudstorage.ListDirectory();
for (int i = 0; i < cloudstorage.DirList.Count; i++)
{
Console.WriteLine(cloudstorage.DirList[i].FileName);
Console.WriteLine(cloudstorage.DirList[i].FileSize);
Console.WriteLine(cloudstorage.DirList[i].FileTime);
Console.WriteLine(cloudstorage.DirList[i].IsDir);
}[/csharp]
オプションで、ファイルマスクに RemoteFile
を設定して、特定のファイルのみをリストすることができます。
[csharp light=”true”]cloudstorage.RemoteFile = "*.txt";
cloudstorage.ListDirectory();[/csharp]
ファイルのダウンロード
Download
メソッドで、特定のファイルをダウンロードできます。
このメソッドを呼び出す前に、ダウンロードするファイルの名前に RemoteFile
を設定します。RemoteFile
がファイルネームの指定のみを行う場合、RemotePath で指定されたパスからダウンロードされます。RemoteFile
は、絶対パスに設定することもできます。
ファイルは、SetDownloadStream
によって指定されたストリーム (存在する場合) にダウンロードされます。ストリームが指定されておらず、LocalFile
が設定されている場合、ファイルは特定のロケーションに保存されます。ストリームが指定されておらず、LocalFile
の設定もされていない場合、ファイル データは ResourceData
で保持されます。
暗号化されたファイルを復号する場合、このメソッドの呼び出し前に EncryptionAlgorithm
および EncryptionPassword
を設定します。
[csharp light=”true”]
cloudstorage.RemotePath = "My Folder";
cloudstorage.RemoteFile = "MyFile.zip";
cloudstorage.LocalFile = "../MyFile.zip";
cloudstorage.Download();[/csharp]
ダウンロードの再開
このコンポーネントは、StartByte
プロパティを使用して、失敗したダウンロードの再開もサポートします。ダウンロードが中断した場合、ダウンロードを再開するためにこのメソッドを呼び出す前に、適切なオフセットに StartByte
を設定します。
[csharp light=”true”]cloudstorage.RemotePath = myRemoteFolder;
cloudstorage.RemoteFile = myRemoteFile;
cloudstorage.LocalFile = downloadFile;
cloudstorage.Download();
//The transfer is interrupted and Download() above fails. Later, resume the download:
//Get the size of the partially download file
cloudstorage.StartByte = new FileInfo(downloadFile).Length;
cloudstorage.RemotePath = myRemoteFolder;
cloudstorage.RemoteFile = myRemoteFile;
cloudstorage.LocalFile = downloadFile;
cloudstorage.Download();[/csharp]
暗号化されたファイルのダウンロードの再開
暗号化されたファイルのダウンロードの再開は、最初のダウンロードの施行時に LocalFile
が設定されていた場合に限りサポートされます。LocalFile
が設定された状態で暗号化されたファイルのダウンロードを始める場合、コンポーネントは、ダウンロードが完了するまでの間暗号化されたデータを保持するため、TempPath
内にテンポラリ ファイルを作成します。
ダウンロードが中断された場合、部分的データを保持するテンポラリ ファイルで DownloadTempFile
を集約します。再開の際、StartByte
とともに DownloadTempFile
を集約し、暗号化されたデータのダウンロードのリマインダーを許可します。暗号化されたデータがダウンロードされると、データは復号され、LocalFile
に書き込まれます。
[csharp light=”true”]cloudstorage.RemotePath = myRemoteFolder;
cloudstorage.RemoteFile = myRemoteFile;
cloudstorage.LocalFile = downloadFile;
cloudstorage.EncryptionPassword = "password";
cloudstorage.Download();
//The transfer is interrupted and Download() above fails. Later, resume the download:
//Get the size of the partially download temp file
cloudstorage.StartByte = new FileInfo(cloudstorage.Config("DownloadTempFile")).Length;
cloudstorage.RemotePath = myRemoteFolder;
cloudstorage.RemoteFile = myRemoteFile;
cloudstorage.LocalFile = downloadFile;
cloudstorage.EncryptionPassword = "password";
cloudstorage.Download();[/csharp]
ファイルのアップロード
Upload
メソッドは、ファイルのアップロードに使用されます。SetUploadStream
を使用してアップロード ストリームを設定する場合、アップロードするデータは、代わりにストリームから取得されます。
RemoteFile
は、相対または絶対パスのどちらかに設定する必要があります。RemoteFile
が絶対パスではない場合、RemotePath
にアップロードされます。
アップロードする前にファイルを暗号化する場合、EncryptionAlgorithm
および EncryptionPassword
を設定します。
注意: 現在、アップロードの再開はサポートしていません。
コードの例
[csharp light=”true”]//Upload with a relative path
cloudstorage.LocalFile = "C:\localfile.txt"
cloudstorage.RemoteFile = "remotefile.txt"
cloudstorage.Upload()
//Upload with an absolute path
cloudstorage.LocalFile = "C:\localfile2.txt"
cloudstorage.RemoteFile = "/folder/remotefile2.txt"
cloudstorage.Upload()[/csharp]
その他の機能
CloudStorage コンポーネントは、単純なアップロードとダウンロードだけではなく、高度な機能を提供します。
EncryptionAlgorithm
およびEncryptionPassword
を使用した暗号化/復号DeleteFile
によるファイル削除の提供MakeDirectory
およびRemoveDirectory
によるフォルダ作成/削除のサポートRenameFile
によるサーバー上の既存ファイル名の変更- その他
/n software 製品の詳細は、こちらをご覧ください。