Поделиться через


Отправка большого двоичного объекта с помощью JavaScript или TypeScript

В этой статье показано, как отправить большой двоичный объект с помощью клиентской библиотеки служба хранилища Azure для JavaScript. Данные можно передать в блочный большой двоичный объект из пути к файлу, потока, буфера или текстовой строки. Вы также можете отправлять большие двоичные объекты с тегами индекса.

Необходимые компоненты

  • В примерах этой статьи предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и JavaScript".
  • Механизм авторизации должен иметь разрешения для выполнения операции отправки. Дополнительные сведения см. в руководстве по авторизации для следующих операций REST API:

Отправка данных в блочный BLOB-объект

Вы можете использовать любой из следующих методов для передачи данных в блочный большой двоичный объект:

  • upload (метод отправки без параллелизма)
  • uploadData
  • uploadFile (доступно только в среде выполнения Node.js)
  • uploadStream (доступно только в среде выполнения Node.js)

Каждый из этих методов можно вызывать с помощью объекта BlockBlobClient .

Отправка блочного 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-объекта из потока

В следующем примере передается блочный большой двоичный объект, создав удобочитаемый поток и отправив поток:

// 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 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-объекта с параметрами конфигурации

При отправке большого двоичного объекта можно определить параметры конфигурации клиентской библиотеки. Эти параметры можно настроить для повышения производительности, повышения надежности и оптимизации затрат. В примерах кода в этом разделе показано, как задать параметры конфигурации с помощью интерфейса BlockBlobParallelUploadOptions и передачи этих параметров в качестве параметра вызову метода отправки.

Указание параметров передачи данных при отправке

Свойства можно настроить в BlockBlobParallelUploadOptions , чтобы повысить производительность операций передачи данных. В следующей таблице перечислены свойства, которые можно настроить, а также описание:

Свойство Description
blockSize Максимальный размер блока для передачи каждого запроса в рамках операции отправки.
concurrency Максимальное количество параллельных запросов, выдаваемых в любое время в рамках одной параллельной передачи.
maxSingleShotSize Если размер данных меньше или равен этому значению, он передается в один раз, а не разбивается на блоки. Если данные передаются в одном снимке, размер блока игнорируется. Значение по умолчанию — 256 МиБ.

В следующем примере кода показано, как задать значения для 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-объекта с тегами индекса

Теги индекса больших двоичных объектов классифицируют данные в учетной записи хранения с помощью атрибутов тегов типа "ключ-значение". Эти теги автоматически индексируются и представляются в виде многомерного индекса с поддержкой поиска для упрощения нахождения данных.

В следующем примере передается блочный большой двоичный объект с тегами индекса, заданными с помощью 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': '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 . В следующем примере кода показано, как задать уровень доступа при отправке большого двоичного объекта:

// 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-объектов. Уровень доступа для блочного большого двоичного объекта Hotможно задать для , Coldили CoolArchive. Чтобы задать уровень Coldдоступа, необходимо использовать минимальную версию клиентской библиотеки 12.13.0.

Дополнительные сведения о уровнях доступа см. в обзоре уровней доступа.

Ресурсы

Дополнительные сведения о отправке больших двоичных объектов с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript см. в следующих ресурсах.

Операции REST API

Пакет SDK Azure для JavaScript содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы JavaScript. Методы клиентской библиотеки для отправки больших двоичных объектов используют следующие операции REST API:

Примеры кода

Просмотрите примеры кода из этой статьи (GitHub):

Ресурсы клиентской библиотеки

См. также

  • Эта статья является частью руководства разработчика хранилища BLOB-объектов для JavaScript/Typescript. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения JavaScript/Typescript.