JavaScript または TypeScript を使用して BLOB をアップロードする
この記事では、JavaScript 用の Azure Storage クライアント ライブラリを使用して BLOB をアップロードする方法について説明します。 ファイル パス、ストリーム、バッファー、またはテキスト文字列からブロック BLOB にデータをアップロードできます。 インデックス タグを使用して BLOB をアップロードすることもできます。
前提条件
- この記事の例では、JavaScript 用の Azure Blob Storage クライアント ライブラリを操作するように設定されたプロジェクトが、既にあることを前提としています。 パッケージのインストール、モジュールのインポート、データ ソースの操作が認可されたクライアント オブジェクトの作成を含むプロジェクトの設定については、「Azure Blob Storage と JavaScript の使用開始」を参照してください。
- 認可メカニズムには、アップロード操作を実行するためのアクセス許可が必要です。 詳細については、次の REST API 操作の認可ガイダンスを参照してください。
ブロック BLOB にデータをアップロードする
次のいずれかのメソッドを使用して、ブロック BLOB にデータをアップロードできます。
- upload (非並列アップロード方法)
- uploadData
- uploadFile (Node.js ランタイムでのみ使用可能)
- uploadStream (Node.js ランタイムでのみ使用可能)
これらの各メソッドは、BlockBlobClient オブジェクトを使用して呼び出すことができます。
ファイル パスからブロック BLOB をアップロードする
次の例では、ローカル ファイル パスからブロック BLOB をアップロードします。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadBlobFromLocalPath(containerClient, blobName, localFilePath){
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath);
}
ストリームからブロック BLOB をアップロードする
次の例では、読み取り可能なストリームを作成し、そのストリームをアップロードして、ブロック BLOB をアップロードします。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// readableStream: Readable stream, for example, a stream returned from fs.createReadStream()
async function uploadBlobFromReadStream(containerClient, blobName, readableStream) {
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload data to block blob using a readable stream
await blockBlobClient.uploadStream(readableStream);
}
バッファーからブロック BLOB をアップロードする
次の例では、ブロック BLOB を Node.js バッファーからアップロードします。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// buffer: blob contents as a buffer, for example, from fs.readFile()
async function uploadBlobFromBuffer(containerClient, blobName, buffer) {
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload buffer
await blockBlobClient.uploadData(buffer);
}
文字列からブロック BLOB をアップロードする
次の例では、ブロック BLOB を文字列からアップロードします。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// fileContentsAsString: blob content
async function uploadBlobFromString(containerClient, blobName, fileContentsAsString){
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length);
}
構成オプションを使用したブロック BLOB のアップロード
BLOB をアップロードするときに、クライアント ライブラリの構成オプションを定義できます。 これらのオプションは、パフォーマンスを向上させたり、信頼性を高めたり、コストを最適化したりするために調整できます。 このセクションのコード例では、BlockBlobParallelUploadOptions インターフェイスを使用して構成オプションを設定する方法と、それらのオプションをパラメーターとしてアップロード メソッド呼び出しに渡す方法を示します。
アップロード時のデータ転送オプションの指定
BlockBlobParallelUploadOptions でプロパティを構成し、データ転送操作のパフォーマンスを向上させることができます。 次の表に、構成できるプロパティと説明を示します。
プロパティ | 説明 |
---|---|
blockSize |
アップロード操作の一部として、要求ごとに転送する最大ブロック サイズ。 |
concurrency |
1 回の並列転送の一部として、任意の時点で発行される並列要求の最大数。 |
maxSingleShotSize |
データのサイズがこの値以下の場合は、チャンクに分割されるのではなく、1 つの put でアップロードされます。 データが 1 回のショットでアップロードされた場合、ブロック サイズは無視されます。 既定値は 256 MiB です。 |
次のコード例は、BlockBlobParallelUploadOptions に値を設定し、そのオプションをアップロードメソッド呼び出しの一部として含める方法を示しています。 このサンプルで使用した値は、推奨を意図したものではありません。 これらの値を適切にチューニングするには、アプリの特定のニーズを考慮する必要があります。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithTransferOptions(containerClient, blobName, localFilePath) {
// Specify data transfer options
const uploadOptions = {
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
concurrency: 2, // maximum number of parallel transfer workers
maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with transfer options
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
データ転送オプションのチューニングの詳細については、「JavaScript を使用したアップロードとダウンロードのパフォーマンス チューニング」を参照してください。
インデックス タグ付きのブロック BLOB をアップロードする
キーと値のタグ属性を使用して、BLOB インデックス タグによってストレージ アカウント内のデータが分類されます。 これらのタグには自動的にインデックスが付けられ、検索可能な多次元インデックスとして公開されるため、データを簡単に見つけることができます。
次の例では、BlockBlobParallelUploadOptions を使用して、インデックス タグが設定されたブロック BLOB をアップロードします。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithIndexTags(containerClient, blobName, localFilePath) {
// Specify index tags for blob
const uploadOptions = {
tags: {
'Sealed': 'false',
'Content': 'image',
'Date': '2022-07-18',
}
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with index tags
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
アップロード時に BLOB のアクセス層を設定する
BlockBlobParallelUploadOptions インターフェイスを使用して、アップロード時に BLOB のアクセス層を設定できます。 次のコード例は、BLOB をアップロードするときにアクセス層を設定する方法を示しています。
// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithAccessTier(containerClient, blobName, localFilePath) {
// Specify access tier
const uploadOptions = {
// 'Hot', 'Cool', 'Cold', or 'Archive'
tier: 'Cool',
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob to cool tier
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
アクセス層の設定はブロック BLOB でのみ許可されています。 ブロック BLOB のアクセス層は、Hot
、Cool
、Cold
、または Archive
に設定できます。 アクセス層を Cold
に設定するには、最小クライアント ライブラリ バージョン 12.13.0 を使用する必要があります。
アクセス層の詳細については、「アクセス層の概要」を参照してください。
リソース
JavaScript 用 Azure Blob Storage クライアント ライブラリを使用した BLOB のアップロードの詳細については、次のリソースを参照してください。
REST API の操作
Azure SDK for JavaScript には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた JavaScript パラダイムを通じて REST API 操作を利用できます。 BLOB をアップロードするためのクライアント ライブラリ メソッドでは、次の REST API 操作を使用します。
コード サンプル
この記事のコード サンプルを表示する (GitHub):
- ローカル ファイル パスからアップロードする: JavaScript または TypeScript
- バッファーからアップロードする: JavaScript または TypeScript
- ストリームからアップロードする: JavaScript または TypeScript
- 文字列からアップロードする: JavaScript または TypeScript
- 転送オプションを指定してアップロードする: JavaScript または TypeScript
- インデックス タグを指定してアップロードする: JavaScript または TypeScript
- アクセス層を指定してアップロードする: JavaScript または TypeScript
クライアント ライブラリのリソース
こちらもご覧ください
関連するコンテンツ
- この記事は、Blob Storage のJavaScript/Typescript 開発者ガイドの一部です。 詳細については、JavaScript/Typescript アプリの構築に関するページにある開発者ガイド全記事の一覧を参照してください。