本文已参与「新人创作礼」活动,一起开启掘金创作之路。
C# Aliyun OSS 接口测试(一)-- 连接OSS并拉取Bucket列表
C# Aliyun OSS 接口测试(二)-- 删除Bucket元素 - 掘金 (juejin.cn)
前言
最近项目测试阶段,在Aliyun OSS上存储了很多测试上传的文件,由于文件较多,即使使用Oss Brower,删起来也不方便,因此就想着写个工具,方便对OSS上的文件进行删除操作。
正文
1.新建工程,导入工具包
新建VS控制台工程,安装NuGet工具包,注意不要选错工具包,如果选择上面的Aliyun.OSS.SDK.NetCore,在调用ListBuckets等查询接口时,会报异常:“无法发送具有此谓词类型的内容正文”,具体请看我写的这篇文章C# Aliyun OSS 获取Bucket列表异常:无法发送具有此谓词类型的内容正文
2.使用建表符,使界面更加友好,任意时刻按Q/q可退出程序
using Aliyun.OSS;
using System;
using System.Collections.Generic;
//一些全局变量
private string m_DefaultEndpoint = "<your endpoint>";
private string m_DefaultAccessKeyId = "<your accesskeyid>";
private string m_DefaultAccessKeySecret = "<your accesskeysecret>";
private string m_Endpoint;
private string m_AccessKeyId;
private string m_AccessKeySecret;
IEnumerable<Bucket> buckets;
private string m_BucketName;
private string m_Order;
private OssClient m_OssClient;
public void Run()
{
Console.WriteLine("┌─────────────────────────────────┐");
Console.WriteLine("│ Ctrl+C 强制 Press Q/q at any time to exit │");
Console.WriteLine("│ │");
Console.WriteLine("│ Aliyun OSS Delete Program │");
Console.WriteLine("│ │");
Console.WriteLine($"│ EnpPoint: {m_DefaultEndpoint} │");
Console.WriteLine($"│ AccessKeyId: {m_DefaultAccessKeyId} │");
Console.WriteLine($"│ AccessKeySecret: {m_DefaultAccessKeySecret} │");
Console.WriteLine("└─────────────────────────────────┘");
Console.WriteLine("");
Login();
}
private string GetOrder()
{
string input = Console.ReadLine().Trim();
if (input.Equals("Q") || input.Equals("q"))
{
Console.WriteLine("");
Console.WriteLine("Press any key to close.");
Console.ReadKey();
Environment.Exit(0);
return null;
}
else
{
return input;
}
}
3.创建OssClient,并拉取Bucket列表
private void Login()
{
while (true)
{
Console.Write("Use the default AK ? (Y/N): ");
m_Order = GetOrder();
if (m_Order.Equals("Y") || m_Order.Equals("y"))
{
m_Endpoint = m_DefaultEndpoint;
m_AccessKeyId = m_DefaultAccessKeyId;
m_AccessKeySecret = m_DefaultAccessKeySecret;
break;
}
else if (m_Order.Equals("N") || m_Order.Equals("n"))
{
Console.Write("Please enter the Enppoint: ");
m_Order = GetOrder();
if (!string.IsNullOrEmpty(m_Order))
{
m_Endpoint = m_Order;
}
Console.Write("Please enter the AccessKeyId: ");
m_Order = GetOrder();
if (!string.IsNullOrEmpty(m_Order))
{
m_AccessKeyId = m_Order;
}
Console.Write("Please enter the AccessKeySecret: ");
m_Order = GetOrder();
if (!string.IsNullOrEmpty(m_Order))
{
m_AccessKeySecret = m_Order;
}
break;
}
else
{
CLog.LogLine(CLog.LogType.Error, "Input Error!");
}
}
m_OssClient = new OssClient(m_Endpoint, m_AccessKeyId, m_AccessKeySecret);
try
{
buckets = m_OssClient.ListBuckets();
BucketOperation();
}
catch (Exception ex)
{
CLog.Log(CLog.LogType.Error, "Login Failed: ");
CLog.LogLine(CLog.LogType.Error, ex.Message);
Console.Write("重新登陆?(Y/N): ");
m_Order = GetOrder();
if (m_Order.Equals("Y") || m_Order.Equals("y"))
{
Console.Clear();
Run();
}
}
}