C# Aliyun OSS 接口测试(一)-- 连接OSS并拉取Bucket列表

301 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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