asp.net core OSS STS 上传 Excel 文件
OSS 怎么配STS, 需要参考阿里云官方文档
using Aliyun.Acs.Core; using Aliyun.Acs.Core.Auth.Sts; using Aliyun.Acs.Core.Http; using Aliyun.Acs.Core.Profile; using Aliyun.OSS; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace aspcore { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static void uploadFile() { var bucketName = "****"; var accessKeyId = "Access Key"; var accessKeySecret = "Access Secret"; var endpoint = "http://oss-cn-***.aliyuncs.com"; var region = "oss-cn-***"; var roleArn = "acs:ram::***:role/***"; // 通过阿里云RAM管理角色管理可以拿到 var roleSessionName = "***"; // 随机指定一个即可 var objectName = "test/test.txt"; IClientProfile profile = DefaultProfile.GetProfile(region, accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); AssumeRoleRequest request = new AssumeRoleRequest(); request.AcceptFormat = FormatType.JSON; //指定角色ARN request.RoleArn = roleArn; request.RoleSessionName = roleSessionName; request.DurationSeconds = 3600; request.Policy = BuildPolicy(bucketName, "test"); // 配置对应的权限 //request.Policy = BuildPolicy(.setPolicy(policy); AssumeRoleResponse response = client.GetAcsResponse(request); Console.WriteLine("AccessKeyId: " + response.Credentials.AccessKeyId); Console.WriteLine("AccessKeySecret: " + response.Credentials.AccessKeySecret); Console.WriteLine("SecurityToken: " + response.Credentials.SecurityToken); Console.WriteLine("Expiration: " + DateTime.Parse(response.Credentials.Expiration).ToLocalTime()); var ossClient = new OssClient(endpoint, response.Credentials.AccessKeyId, response.Credentials.AccessKeySecret, response.Credentials.SecurityToken); try { byte[] binaryData = Encoding.ASCII.GetBytes("test"); MemoryStream requestContent = new MemoryStream(binaryData); // 上传文件。 ossClient.PutObject(bucketName, $"{bucketName}/{objectName}", requestContent); Console.WriteLine("Put object succeeded"); } catch (Exception ex) { Console.WriteLine("Put object failed, {0}", ex.Message); } Console.ReadKey(); } public static string BuildPolicy(string bucket, string dir) { return "{\n" + " \"Version\": \"1\", \n" + " \"Statement\": [\n" + " {\n" + " \"Action\": [\n" + " \"oss:PutObject\"\n" + " ], \n" + " \"Resource\": [\n" + $" \"acs:oss:*:*:{bucket}/*\" \n" + " ], \n" + " \"Effect\": \"Allow\"\n" + " }\n" + " ]\n" + "}"; } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>().UseUrls("http://*:9000"); }); } }
上传 Excel 文件, 解决乱码问题 (下面的代码替换 Try 里的内容)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】