Azure Stroage的使用笔记

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;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部