#node.js #azure #azure-blob-storage
#node.js #azure #azure-blob-хранилище
Вопрос:
Когда я пытаюсь загрузить изображения с помощью Azure JS SDK версии 10, они отображаются как application / octetstream.
Это то, что я сделал изначально в соответствии с официальной документацией Azure
async function uploadLocalFile(
aborter,
containerClient,
filePath,
file_guid,
)
filePath = path.resolve(filePath); //Image file path
const fileName = file_guid; //contains file name
const blobClient = containerClient.getBlobClient(fileName);
const blockBlobClient = blobClient.getBlockBlobClient();
return await blockBlobClient.uploadFile(filePath, aborter);
}
Это была загрузка изображений в приложение / octetstream
Затем я попробовал это, установив заголовки и попытавшись сделать это как изображение / jpeg, но все равно это делает тип содержимого как application / octetstream.
filePath = path.resolve(filePath);
const fileName = file_guid;
const blobClient = containerClient.getBlobClient(fileName);
const blockBlobClient = blobClient.getBlockBlobClient();
const blobOptions = { blobHTTPHeaders: { blobContentType: 'image/jpeg' } };
return await blockBlobClient.uploadFile(filePath, aborter, blobOptions);
}
Есть ли какой-либо способ сделать тип содержимого изображений как image / jpeg при загрузке в хранилище больших двоичных объектов Azure?
Комментарии:
1. Используете ли вы Node @ v10 или Azure SDK @ v10?
2. Azure SDk версии 10 на nodejs версии 12
Ответ №1:
Я тестирую с вашим кодом и устанавливаю httpHeaderOptions
, вы можете обратиться к описанию этого интерфейса:BlobHTTPHeaders, ниже мой тестовый код.
const { BlobServiceClient, StorageSharedKeyCredential } = require("@azure/storage-blob");
const path = require("path");
// Enter your storage account name and shared key
const account = "xxxx";
const accountKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const blobServiceClient = new BlobServiceClient(
`https://${account}.blob.core.windows.net`,
sharedKeyCredential
);
const containerName = "container";
async function main() {
const containerClient = blobServiceClient.getContainerClient(containerName);
const filePath = path.resolve("C:\xxxxx\me.jpg");
const fileName = "bbb";
const blobClient = containerClient.getBlobClient(fileName);
const blockBlobClient = blobClient.getBlockBlobClient();
const blobOptions = { blobHTTPHeaders: { blobContentType: 'image/jpeg' } };
const uploadBlobResponse =await blockBlobClient.uploadFile(filePath,blobOptions);
console.log(`Upload block blob test.txt successfully`);
}
main();