Невозможно установить тип содержимого с помощью метода uploadFile в @ azure / storage-blob (SDK / NPM) - PullRequest
0 голосов
/ 14 февраля 2020

Невозможно установить azure тип содержимого из узла, используя приведенный ниже код. Он всегда хранит тип контента в виде октанового потока.

const { BlobServiceClient } = require('@azure/storage-blob');

const { AZURE_STORAGE_CONNECTION_STRING } = process.env;

let blobServiceClient;

async function getBlobServiceClient() {
  if (!blobServiceClient) {
    blobServiceClient = await BlobServiceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING);
  }

  return blobServiceClient;
}

async function uploadFile(filePath, containerName) {
  const bsClient = await getBlobServiceClient();
  const containerClient = bsClient.getContainerClient(containerName);
  const blockBlobClient = containerClient.getBlockBlobClient('myImag6.png', { blobHTTPHeaders: { blobContentType: 'image/png' } });

  try {
    const res = await blockBlobClient.uploadFile(filePath);
    console.log(res);
  } catch (error) {
    console.log(error);
  }
}

Следующая проблема, похоже, связана с этим, но я не уверен. https://github.com/Azure/azure-sdk-for-js/issues/6192

Пожалуйста, дайте мне больше информации об этом и как решить эту проблему.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2020

Вы пытались установить blobHttpHeaders и передали в метод uploadFile?

const blobOptions = { blobHTTPHeaders: { blobContentType: 'image/png' } };
const res = await blockBlobClient.uploadFile(filePath, blobOptions);
3 голосов
/ 14 февраля 2020

Предположим, это потому, что вы не устанавливаете BlockBlobUploadOptions в методе uploadFile, вы используете его только в методе getBlockBlobClient, в моем тесте кода ниже он может установить тип содержимого.

    const { BlobServiceClient, StorageSharedKeyCredential } = require("@azure/storage-blob");

    // Enter your storage account name and shared key
    const account = "account name";
    const accountKey = "account key";

    const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
    const blobServiceClient = new BlobServiceClient(
      `https://${account}.blob.core.windows.net`,
      sharedKeyCredential
    );

    const containerName = "test";

    async function main() {
  const containerClient = blobServiceClient.getContainerClient(containerName);


  const blockBlobClient = containerClient.getBlockBlobClient('test.txt');
  const blobOptions = { blobHTTPHeaders: { blobContentType: 'text/plain' } };
  const uploadBlobResponse = await blockBlobClient.uploadFile('E:\\project\\jsstorage\\test.txt',blobOptions);

  console.log(`Upload block blob test.txt successfully`, uploadBlobResponse.requestId);
}

main();

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...