在 .NET Core 中使用阿里云对象存储服务

作者 : 慕源网 本文共3501个字,预计阅读时间需要9分钟 发布时间: 2021-10-28 共1.02K人阅读

阿里巴巴是一家在亚洲,尤其是中国拥有大量市场份额的云提供商。

对象存储服务 (OSS) 是一种加密且安全的云存储服务,可以存储、处理和访问来自世界任何地方的海量数据。OSS 相当于 Azure Blob 存储。

OSS基于Buckets,每个Bucket就像一个容器,可以让你插入大量不同扩展名和格式的文件。

首先,您可以创建一个新的 Bucket 并开始存储文件。 

例如,在概述部分,您可以看到与您创建的存储桶、版本控制、启用 CORS 和服务器端加密相关的所有属性。

要将 OSS 与 .NET Core 一起使用,我们需要先安装该库。 

Nuget 包

NuGet Gallery | Aliyun.OSS.SDK.NetCore 2.13.0

要连接bucket ,您需要 4 个参数,

private readonly  string bucketName = "bucketName"; //bucket name in OSS
private readonly string accessKeyId = "<yourAccessKeyId>";  // AccessKey from Alibaba Account
private readonly string accessKeySecret = "<yourAccessKeySecret>";  // KeySecret from Alibaba Account
private readonly string endpoint = "http://oss-cn-hangzhou.aliyuncs.com";  // endpoint from region where the OSS is hosted

然后,我们需要创建一个 OssClient 来根据我们的需要执行我们需要的命令。 

这是一个使用 PutObject 在 OSS 中插入新文件的示例,

//class to transfer info  
public class MyFile  
{    
   public string FileName {get;set;}     
   public string ContentType {get;set;}    
   public byte[] FileInfo {get;set;}    
} 
public async Task SaveFileAsync(MyFile file)  
{  
   // Create an OSSClient instance.  
   var client = new OssClient(endpoint, accessKeyId, accessKeySecret);  
  
   client.PutObject(bucketName, file.FileName, new MemoryStream(file.FileInfo));  
}  
我们可以使用 ListObjects 来获取 Bucket 中的所有文件,
// 创建一个 OSSClient 实例。  
var client =  new  OssClient(endpoint, accessKeyId, accessKeySecret);  
  
ObjectListing objects = client.ListObjects(bucketName); 
我们可以使用 GetObject 获取有关特定文件的所有信息,包括以字节为单位的数据,
public async Task < MyFile > GetInfoFile(string fileName) {  
    // Create an OSSClient instance.    
    var client = new OssClient(endpoint, accessKeyId, accessKeySecret);  
    var objectinfo = client.GetObject(bucketName, fileName);  
    MemoryStream ms = new MemoryStream();  
    await objectinfo.Content.CopyToAsync(ms);  
    var myfile = new MyFile() {  
        FileName = objectinfo.Key, FileInfo = ms.ToArray()  
    };  
    return myfile;  
}   
最后,这是一个将此方法包含在接口中的示例,
using System;  
using System.Collections.Generic;  
using System.IO;  
using System.Linq;  
using System.Threading.Tasks;  
using Microsoft.Extensions.Configuration;  
using shared;  
using Aliyun.OSS;  
using Aliyun.OSS.Common;  
namespace api.Services {  
    public class AlibabaCloudStorageService: IAlibabaCloudStorageService {  
        private readonly IConfiguration Configuration;  
        private readonly string bucketName = "mteheranst1";  
        private readonly string accessKeyId = "<yourAccessKeyId>";  
        private readonly string accessKeySecret = "<yourAccessKeySecret>";  
        private readonly string endpoint = "http://oss-cn-hangzhou.aliyuncs.com";  
        public AlibabaCloudStorageService(IConfiguration configuration) {  
            Configuration = configuration;  
            accessKeyId = Configuration["AccessKeyId"];  
            accessKeySecret = Configuration["AccessKeySecret"];  
            endpoint = Configuration["Endpoint"];  
        }  
        public async Task SaveFileAsync(MyFile file) {  
            // Create an OSSClient instance.    
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);  
            client.PutObject(bucketName, file.FileName, new MemoryStream(file.FileInfo));  
        }  
        public async Task < IEnumerable < MyFile >> GetFiles() {  
            // Create an OSSClient instance.    
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);  
            ObjectListing objects = client.ListObjects(bucketName);  
            List < MyFile > list = new List < MyFile > ();  
            foreach(var item in objects.ObjectSummaries) {  
                var myFile = new MyFile() {  
                    FileName = item.Key  
                };  
                list.Add(myFile);  
            }  
            return list;  
        }  
        public async Task < Myfile > GetInfoFile(string fileName) {  
            // Create an OSSClient instance.    
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret);  
            var objectinfo = client.GetObject(bucketName, fileName);  
            MemoryStream ms = new MemoryStream();  
            await objectinfo.Content.CopyToAsync(ms);  
            var myfile = new MyFile() {  
                FileName = objectinfo.Key, FileInfo = ms.ToArray()  
            };  
            return myfile;  
        }  
    }  
    public interface IAlibabaCloudStorageService {  
        Task SaveFileAsync(MyFilefile);  
        Task < IEnumerable < MyFile >> GetFiles();  
        Task < MyFile > GetInfoFile(string fileName);  
    }  
} 
我想与您分享本指南,您可以在其中学习如何在 Blazor + .NET Core 和阿里云 (OSS) 中管理文件。

慕源网 » 在 .NET Core 中使用阿里云对象存储服务

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录