请尝试下面的代码。
const {BlobServiceClient, StorageSharedKeyCredential} = require('@azure/storage-blob');
const createCsvStringifier = require('csv-writer').createObjectCsvStringifier;
const accountName = 'account-name';
const accountKey = 'account-key';
const container = 'container-name';
const blobName = 'text.csv';
const csvStringifier = createCsvStringifier({
header: [
{id: 'name', title: 'NAME'},
{id: 'lang', title: 'LANGUAGE'}
]
});
const records = [
{name: 'Bob', lang: 'French, English'},
{name: 'Mary', lang: 'English'}
];
const headers = csvStringifier.getHeaderString();
const data = csvStringifier.stringifyRecords(records);
const blobData = `${headers}${data}`;
const credentials = new StorageSharedKeyCredential(accountName, accountKey);
const blobServiceClient = new BlobServiceClient(`https://${accountName}.blob.core.windows.net`, credentials);
const containerClient = blobServiceClient.getContainerClient(container);
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
const options = {
blobHTTPHeaders: {
blobContentType: 'text/csv'
}
};
blockBlobClient.uploadData(Buffer.from(blobData), options)
.then((result) => {
console.log('blob uploaded successfully!');
console.log(result);
})
.catch((error) => {
console.log('failed to upload blob');
console.log(error);
});
这段代码中有两件事:
-
如果您不想将数据写入磁盘,请使用createObjectCsvStringifier。
-
使用@azure/storage-blob 节点包而不是azure-storage 包,因为前者是较新的包,而后者已被弃用。
更新
这是使用azure-storage 包的代码。
const azure = require('azure-storage');
const createCsvStringifier = require('csv-writer').createObjectCsvStringifier;
const accountName = 'account-name';
const accountKey = 'account-key';
const container = 'container-name';
const blobName = 'text.csv';
const csvStringifier = createCsvStringifier({
header: [
{id: 'name', title: 'NAME'},
{id: 'lang', title: 'LANGUAGE'}
]
});
const records = [
{name: 'Bob', lang: 'French, English'},
{name: 'Mary', lang: 'English'}
];
const headers = csvStringifier.getHeaderString();
const data = csvStringifier.stringifyRecords(records);
const blobData = `${headers}${data}`;
const blobService = azure.createBlobService(accountName, accountKey);
const options = {
contentSettings: {
contentType: 'text/csv'
}
}
blobService.createBlockBlobFromText(container, blobName, blobData, options, (error, response, result) => {
if (error) {
console.log('failed to upload blob');
console.log(error);
} else {
console.log('blob uploaded successfully!');
console.log(result);
}
});