Przekazywanie obiektu blob za pomocą języka TypeScript
W tym artykule pokazano, jak przekazać obiekt blob przy użyciu biblioteki klienta usługi Azure Storage dla języka JavaScript. Dane można przekazać do blokowego obiektu blob ze ścieżki pliku, strumienia, buforu lub ciągu tekstowego. Można również przekazywać obiekty blob za pomocą tagów indeksu.
Wymagania wstępne
- W przykładach w tym artykule założono, że masz już skonfigurowany projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka JavaScript. Aby dowiedzieć się więcej o konfigurowaniu projektu, w tym instalacji pakietu, importowaniu modułów i tworzeniu autoryzowanego obiektu klienta do pracy z zasobami danych, zobacz Wprowadzenie do usługi Azure Blob Storage i TypeScript.
- Mechanizm autoryzacji musi mieć uprawnienia do wykonywania operacji przekazywania. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla następujących operacji interfejsu API REST:
Przekazywanie danych do blokowego obiektu blob
Aby przekazać dane do blokowego obiektu blob, można użyć dowolnej z następujących metod:
- upload (metoda przekazywania niezrównanego)
- Uploaddata
- uploadFile (dostępny tylko w środowisku uruchomieniowym Node.js)
- uploadStream (dostępny tylko w środowisku uruchomieniowym Node.js)
Każda z tych metod może być wywoływana przy użyciu obiektu BlockBlobClient .
Przekazywanie blokowego obiektu blob ze ścieżki pliku
Poniższy przykład przekazuje blokowy obiekt blob ze ścieżki pliku lokalnego:
async function uploadBlobFromLocalPath(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath);
}
Przekazywanie blokowego obiektu blob ze strumienia
Poniższy przykład przekazuje blokowy obiekt blob przez utworzenie czytelnego strumienia i przekazanie strumienia:
async function uploadBlobFromReadStream(
containerClient: ContainerClient,
blobName: string,
readStream: fs.ReadStream
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadStream(readStream);
}
Przekazywanie blokowego obiektu blob z buforu
Poniższy przykład przekazuje blokowy obiekt blob z buforu Node.js:
async function uploadBlobFromBuffer(
containerClient: ContainerClient, blobName: string, buffer: Buffer
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload buffer
await blockBlobClient.uploadData(buffer);
}
Przekazywanie blokowego obiektu blob z ciągu
Poniższy przykład przekazuje blokowy obiekt blob z ciągu:
async function uploadBlobFromString(
containerClient: ContainerClient,
blobName: string,
fileContents: string
): Promise<void> {
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.upload(fileContents, fileContents.length);
}
Przekazywanie blokowego obiektu blob przy użyciu opcji konfiguracji
Opcje konfiguracji biblioteki klienta można zdefiniować podczas przekazywania obiektu blob. Te opcje można dostosować, aby zwiększyć wydajność, zwiększyć niezawodność i zoptymalizować koszty. Przykłady kodu w tej sekcji pokazują, jak ustawić opcje konfiguracji przy użyciu interfejsu BlockBlobParallelUploadOptions oraz jak przekazać te opcje jako parametr do wywołania metody przekazywania.
Określanie opcji transferu danych podczas przekazywania
Właściwości można skonfigurować w bloku BlockBlobParallelUploadOptions , aby zwiększyć wydajność operacji transferu danych. W poniższej tabeli wymieniono właściwości, które można skonfigurować, wraz z opisem:
Właściwości | opis |
---|---|
blockSize |
Maksymalny rozmiar bloku do przeniesienia dla każdego żądania w ramach operacji przekazywania. |
concurrency |
Maksymalna liczba żądań równoległych, które są wydawane w danym momencie w ramach pojedynczego transferu równoległego. |
maxSingleShotSize |
Jeśli rozmiar danych jest mniejszy lub równy tej wartości, zostanie przekazany w jednym miejscu, a nie podzielony na fragmenty. Jeśli dane są przekazywane w jednym zdjęciu, rozmiar bloku jest ignorowany. Wartość domyślna to 256 MiB. |
Poniższy przykład kodu przedstawia sposób ustawiania wartości dla metody BlockBlobParallelUploadOptions i dołączania opcji w ramach wywołania metody przekazywania. Wartości podane w przykładach nie są przeznaczone do zalecenia. Aby prawidłowo dostosować te wartości, należy wziąć pod uwagę konkretne potrzeby aplikacji.
async function uploadWithTransferOptions(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Specify data transfer options
const uploadOptions: BlockBlobParallelUploadOptions = {
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: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Przekazywanie blokowego obiektu blob z tagami indeksu
Tagi indeksu obiektów blob kategoryzują dane na koncie magazynu przy użyciu atrybutów tagów klucz-wartość. Te tagi są automatycznie indeksowane i uwidaczniane jako indeks wielowymiarowy z możliwością wyszukiwania w celu łatwego znajdowania danych.
Poniższy przykład przekazuje blokowy obiekt blob z tagami indeksu ustawionymi przy użyciu metody BlockBlobParallelUploadOptions:
async function uploadBlobWithIndexTags(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Specify index tags for blob
const uploadOptions: BlockBlobParallelUploadOptions = {
tags: {
'Sealed': 'false',
'Content': 'image',
'Date': '2023-06-01',
}
};
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Ustawianie warstwy dostępu obiektu blob podczas przekazywania
Warstwę dostępu obiektu blob można ustawić podczas przekazywania przy użyciu interfejsu BlockBlobParallelUploadOptions . W poniższym przykładzie kodu pokazano, jak ustawić warstwę dostępu podczas przekazywania obiektu blob:
async function uploadBlobWithAccessTier(
containerClient: ContainerClient,
blobName: string,
localFilePath: string
): Promise<void> {
// Upload blob to 'Cool' access tier
const uploadOptions: BlockBlobParallelUploadOptions = {
tier: 'Cool'
};
// Create blob client from container client
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Ustawienie warstwy dostępu jest dozwolone tylko dla blokowych obiektów blob. Warstwę dostępu dla blokowego obiektu blob można ustawić na Hot
, Cool
, Cold
lub Archive
. Aby ustawić warstwę dostępu na Cold
, należy użyć minimalnej wersji biblioteki klienta 12.13.0.
Aby dowiedzieć się więcej na temat warstw dostępu, zobacz Omówienie warstw dostępu.
Zasoby
Aby dowiedzieć się więcej na temat przekazywania obiektów blob przy użyciu biblioteki klienta usługi Azure Blob Storage dla języków JavaScript i TypeScript, zobacz następujące zasoby.
Operacje interfejsu API REST
Zestaw Azure SDK dla języka JavaScript i TypeScript zawiera biblioteki oparte na interfejsie API REST platformy Azure, które umożliwiają interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów językowych. Metody biblioteki klienta do przekazywania obiektów blob używają następujących operacji interfejsu API REST:
- Umieszczanie obiektu blob (interfejs API REST)
- Umieść blok (interfejs API REST)
Przykłady kodu
Wyświetl przykłady kodu z tego artykułu (GitHub):
- Przekazywanie ze ścieżki pliku lokalnego
- Przekazywanie z buforu
- Przekazywanie ze strumienia
- Przekazywanie z ciągu
- Przekazywanie z opcjami transferu
- Przekazywanie za pomocą tagów indeksu
- Przekazywanie za pomocą warstwy dostępu