概述
Azure Stroage的使用笔记
去年做项目用到了Azure Storage,今天抽空整理一下笔记。
所谓Azure Storage其实可以理解为云盘,一般来说会提供相应的API做文件的上传和下载。
今天也只是为了记录一下Azure Stroage的API的简单使用。
一、Nodejs版本
想要下载Azure Storage上的文件有两种方式, 第一种是使用 连接字符串
。
这种方式没有时间的限制,随时可以下载。
const azureStorage = require("azure-storage");
const storageBlob = require("@azure/storage-blob");
function download (connectString, sourceFileName, downloadPath, storagePath) {
const blobService = azureStorage.createBlobService(connectString);
return new Promise((resolve, reject) => {
blobService.getBlobToLocalFile(sourceFileName, downloadPath, storagePath, (error, serverBlob) => {
if (!error) {
resolve(serverBlob);
}
reject(error);
});
});
}
第二种是使用accessKey,这种方式是生成临时公网可访问的链接进行下载,可指定链接的有效时间、权限等。等价于在storage管理画面中分享文件的操作。
结合画面操作会更好理解。
const cerds = new storageBlob.StorageSharedKeyCredential(SETTINGS.STORAGE_NAME, SETTINGS.STORAGE_KEY);
const blobServiceClient = new storageBlob.BlobServiceClient(`https://${SETTINGS.STORAGE_NAME}.blob.core.windows.net`, cerds);
const client = blobServiceClient.getContainerClient(SETTINGS.PDF_CONTAINER_NAME);
// sourceFileName: 00111111/share.pdf
function getBolbSAS (sourceFileName) {
return new Promise((resolve, reject) => {
const blobClient = client.getBlobClient(sourceFileName);
blobClient.exists().then((res) => {
if (res) {
let date = new Date();
let containerName = SETTINGS.PDF_CONTAINER_NAME;
const blobSAS = storageBlob.generateBlobSASQueryParameters({
containerName,
blobName: sourceFileName,
permissions: storageBlob.ContainerSASPermissions.parse("racwd"),
startsOn: date,
expiresOn: new Date(date.valueOf() + 86400),
},
cerds,
).toString();
resolve(`${blobClient.url}?${blobSAS}`);
} else {
resolve(null);
}
}).catch((err) => {
reject(err);
});
});
}
二、C#版本
使用连接字符串和容器路径创建客户端后可以很简单的对Storage进行操作。这里列举上传和下载文件的方法,其他的方法类似,利用IDE的提示功能可以很方便的进行验证。
using System;
using System.IO;
using System.Collections.Generic;
using Azure.Storage.Blobs;
BlobContainerClient jinjiDataClient = new BlobContainerClient(keyValueMap["StorageConnectionString"], keyValueMap["JinjiDataPath"]);
// 下载文件
public bool DownloadFileFromContiner(string containerName, string soruceName, string localFile)
{
try
{
using (MemoryStream memoryStream = new MemoryStream())
{
jinjiDataClient.GetBlobClient(soruceName).DownloadTo(memoryStream);
using (FileStream fileStream = System.IO.File.Create(localFile))
{
memoryStream.WriteTo(fileStream);
}
}
return true;
}
catch(Exception e)
{
return false;
}
}
// 上传文件
public bool UploadFileToContainer(string filePath, string azureFilePath)
{
try
{
using (FileStream fileStream = System.IO.File.Open(filePath, FileMode.Open))
{
jinjiDataClient.UploadBlob(azureFilePath, fileStream);
}
return true;
}
catch(Exception e)
{
return false;
}
}
最后
以上就是土豪导师为你收集整理的Azure Stroage的使用笔记的全部内容,希望文章能够帮你解决Azure Stroage的使用笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复