Przekazywanie obiektu blob za pomocą języka JavaScript

W tym artykule pokazano, jak przekazać obiekt blob przy użyciu biblioteki klienta usługi Azure Storage dla języka JavaScript. Dane można przekazywać 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 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 Azure Blob Storage i Języka JavaScript.
  • 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

Do przekazywania danych do blokowego obiektu blob można użyć dowolnej z następujących metod:

  • upload (metoda przekazywania nie równoległego)
  • Uploaddata
  • uploadFile (dostępne tylko w środowisku uruchomieniowym Node.js)
  • uploadStream (dostępna 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:

// 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);
}

Przekazywanie blokowego obiektu blob ze strumienia

Poniższy przykład przekazuje blokowy obiekt blob, tworząc strumień czytelny i przekazując strumień:

// 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);
}

Przekazywanie blokowego obiektu blob z buforu

Poniższy przykład przekazuje blokowy obiekt blob z buforu 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);
}

Przekazywanie blokowego obiektu blob z ciągu

Poniższy przykład przekazuje blokowy obiekt blob z ciągu:

// 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);
}

Przekazywanie blokowego obiektu blob z opcjami 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 elemecie 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ść 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 umieścieniu, a nie podzielony na fragmenty. Jeśli dane zostaną przekazane w jednym zrzucie ekranu, rozmiar bloku zostanie zignorowany. Wartość domyślna to 256 MiB.

Poniższy przykład kodu pokazuje, jak ustawić wartości dla metody BlockBlobParallelUploadOptions i uwzględnić opcje w ramach wywołania metody przekazywania. Wartości podane w przykładach nie są przeznaczone do bycia zaleceniem. Aby prawidłowo dostosować te wartości, należy wziąć pod uwagę konkretne potrzeby aplikacji.

// 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 index tags
  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Przekazywanie blokowego obiektu blob z tagami indeksu

Tagi indeksów 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 do wyszukiwania w celu łatwego znajdowania danych.

Poniższy przykład przekazuje blokowy obiekt blob z ustawionymi tagami indeksu przy użyciu polecenia BlockBlobParallelUploadOptions:

// 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': '2023-06-01',
    }
  }

  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload blob with index tags
  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:

// 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 = {
    tier: 'Cool',
  }

  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload blob to cool tier
  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, Coldlub Archive. Aby ustawić warstwę dostępu na Cold, należy użyć minimalnej wersji biblioteki klienta 12.13.0.

Aby dowiedzieć się więcej o warstwach 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 Azure Blob Storage dla języka JavaScript, zobacz następujące zasoby.

Operacje interfejsu API REST

Zestaw Azure SDK dla języka JavaScript 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ęzyka JavaScript. Metody biblioteki klienta do przekazywania obiektów blob używają następujących operacji interfejsu API REST:

Przykłady kodu

Wyświetl przykłady kodu z tego artykułu (GitHub):

Zasoby biblioteki klienta

Zobacz też