このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
この記事では、JavaScript 用の Azure Storage クライアント ライブラリを使用して BLOB をアップロードする方法について説明します。 ファイル パス、ストリーム、バッファー、またはテキスト文字列からブロック BLOB にデータをアップロードできます。 インデックス タグを使用して BLOB をアップロードすることもできます。
次のいずれかのメソッドを使用して、ブロック BLOB にデータをアップロードできます。
これらの各メソッドは、BlockBlobClient オブジェクトを使用して呼び出すことができます。
次の例では、ローカル ファイル パスからブロック BLOB をアップロードします。
// containerClient: ContainerClient object// blobName: string, includes file extension if provided// localFilePath: fully qualified path and file nameasync function uploadBlobFromLocalPath(containerClient, blobName, localFilePath){ // Create blob client from container client const blockBlobClient = containerClient.getBlockBlobClient(blobName); await blockBlobClient.uploadFile(localFilePath);}
次の例では、読み取り可能なストリームを作成し、そのストリームをアップロードして、ブロック 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 を 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 を文字列からアップロードします。
// containerClient: ContainerClient object// blobName: string, includes file extension if provided// fileContentsAsString: blob contentasync function uploadBlobFromString(containerClient, blobName, fileContentsAsString){ // Create blob client from container client const blockBlobClient = containerClient.getBlockBlobClient(blobName); await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length);}
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 nameasync 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 インデックス タグによってストレージ アカウント内のデータが分類されます。 これらのタグには自動的にインデックスが付けられ、検索可能な多次元インデックスとして公開されるため、データを簡単に見つけることができます。
次の例では、BlockBlobParallelUploadOptions を使用して、インデックス タグが設定されたブロック BLOB をアップロードします。
// containerClient: ContainerClient object// blobName: string, includes file extension if provided// localFilePath: fully qualified path and file nameasync 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);}
BlockBlobParallelUploadOptions インターフェイスを使用して、アップロード時に BLOB のアクセス層を設定できます。 次のコード例は、BLOB をアップロードするときにアクセス層を設定する方法を示しています。
// containerClient: ContainerClient object// blobName: string, includes file extension if provided// localFilePath: fully qualified path and file nameasync 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 のアップロードの詳細については、次のリソースを参照してください。
Azure SDK for JavaScript には Azure REST API に基づいて構築されたライブラリが含まれるため、使い慣れた JavaScript パラダイムを通じて REST API 操作を利用できます。 BLOB をアップロードするためのクライアント ライブラリ メソッドでは、次の REST API 操作を使用します。
この記事のコード サンプルを表示する (GitHub):
このページはお役に立ちましたか?
このページはお役に立ちましたか?