阿里云 OSS C# SDK 使用实践与参数详解

阿里云 OSS(Object Storage Service)提供了一种高效、可靠、安全的存储解决方案,可以用来存储和管理数据文件。阿里云 OSS 的 C# SDK 是一组面向 .NET 开发人员的 API,用于在 C# 中与 OSS 进行交互。


1. 安装阿里云 OSS C# SDK

首先,你需要在项目中引入阿里云 OSS 的 SDK。可以通过 NuGet 来安装阿里云的 OSS 客户端 SDK。

在 Visual Studio 中打开 NuGet 包管理器控制台,执行以下命令:

Install-Package Aliyun.OSS.SDK.NetCore

2. 配置阿里云 OSS 客户端

要使用 OSS 服务,你需要配置 AccessKeyId、AccessKeySecret 和 Endpoint,这三个参数是连接到 OSS 服务的必备信息。

using Aliyun.OSS;
using System;

class OSSExample
{
    private static string accessKeyId = "你的AccessKeyId";
    private static string accessKeySecret = "你的AccessKeySecret";
    private static string endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 区域Endpoint,根据实际情况修改
    private static string bucketName = "你的bucket名称";

    static void Main(string[] args)
    {
        var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
        Console.WriteLine("客户端初始化成功!");
    }
}

3. 常用操作及参数详解

1. 创建 OSS 客户端对象
OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  • endpoint:阿里云 OSS 的域名,可以在阿里云控制台获取。
  • accessKeyId 和 accessKeySecret:是你在阿里云控制台创建的密钥,用于身份验证。
2. 上传文件到 OSS
 /// <summary>
 /// 上传本地文件到阿里云OSS
 /// </summary>
 /// <param name="localFilePath">本地文件完整路径</param>
 /// <param name="ossObjectName">OSS中存储的文件路径+名称(如:hnt/20221227171528.jpg)</param>
 /// <exception cref="ArgumentNullException">参数为空时抛出</exception>
 /// <exception cref="FileNotFoundException">本地文件不存在时抛出</exception>
 public void UploadFileToOss(string localFilePath, string ossObjectName)
 {
     // 入参合法性校验
     if (string.IsNullOrWhiteSpace(localFilePath))
         throw new ArgumentNullException(nameof(localFilePath), "本地文件路径不能为空");
     if (string.IsNullOrWhiteSpace(ossObjectName))
         throw new ArgumentNullException(nameof(ossObjectName), "OSS对象名称不能为空");
     if (!File.Exists(localFilePath))
         throw new FileNotFoundException("本地文件不存在", localFilePath);

     try
     {
         // 创建客户端并执行上传
         var client = CreateOssClient();
         client.PutObject(bucketName, ossObjectName, localFilePath);
         Console.WriteLine($"文件上传成功!OSS路径:{ossObjectName}");
     }
     catch (OssException ex)
     {
         // 捕获OSS专属异常(含错误码),便于定位问题
         Console.WriteLine($"OSS上传异常:错误码={ex.ErrorCode},错误信息={ex.Message}");
         throw; // 抛出异常让上层处理
     }
     catch (Exception ex)
     {
         Console.WriteLine($"文件上传失败:{ex.Message}");
         throw;
     }
 }
  • bucketName:目标存储空间名称。
  • objectName:文件在 OSS 中的对象名称。
  • localFile:本地文件路径。
3. 下载文件
/// <summary>
/// 从阿里云OSS下载文件到本地
/// </summary>
/// <param name="ossObjectName">OSS中的文件路径+名称</param>
/// <param name="localSavePath">本地保存的完整路径</param>
/// <exception cref="ArgumentNullException">参数为空时抛出</exception>
public void DownloadFileFromOss(string ossObjectName, string localSavePath)
{
    // 入参合法性校验
    if (string.IsNullOrWhiteSpace(ossObjectName))
        throw new ArgumentNullException(nameof(ossObjectName), "OSS对象名称不能为空");
    if (string.IsNullOrWhiteSpace(localSavePath))
        throw new ArgumentNullException(nameof(localSavePath), "本地保存路径不能为空");

    try
    {
        var client = CreateOssClient();
        // 自动创建下载目录(避免目录不存在导致失败)
        string saveDirectory = Path.GetDirectoryName(localSavePath);
        if (!string.IsNullOrEmpty(saveDirectory) && !Directory.Exists(saveDirectory))
        {
            Directory.CreateDirectory(saveDirectory);
        }

        // 构建下载请求并写入本地文件流
        var getRequest = new GetObjectRequest(bucketName, ossObjectName);
        using (var localFileStream = File.OpenWrite(localSavePath))
        {
            client.GetObject(getRequest, localFileStream);
        }

        Console.WriteLine($"文件下载成功!本地路径:{localSavePath}");
    }
    catch (OssException ex)
    {
        Console.WriteLine($"OSS下载异常:错误码={ex.ErrorCode},错误信息={ex.Message}");
        throw;
    }
    catch (Exception ex)
    {
        Console.WriteLine($"文件下载失败:{ex.Message}");
        throw;
    }
}
  • 通过指定 OSS 中的对象名来下载文件。
4. 删除文件
/// <summary>
/// 删除阿里云OSS中的指定文件
/// </summary>
/// <param name="ossObjectName">OSS中的文件路径+名称</param>
/// <exception cref="ArgumentNullException">参数为空时抛出</exception>
public void DeleteFileFromOss(string ossObjectName)
{
    if (string.IsNullOrWhiteSpace(ossObjectName))
        throw new ArgumentNullException(nameof(ossObjectName), "OSS对象名称不能为空");

    try
    {
        var client = CreateOssClient();
        client.DeleteObject(bucketName, ossObjectName);
        Console.WriteLine($"文件删除成功!OSS路径:{ossObjectName}");
    }
    catch (OssException ex)
    {
        Console.WriteLine($"OSS删除异常:错误码={ex.ErrorCode},错误信息={ex.Message}");
        throw;
    }
    catch (Exception ex)
    {
        Console.WriteLine($"文件删除失败:{ex.Message}");
        throw;
    }
}
5. 列举文件
/// <summary>
/// 获取OSS指定前缀(目录)下的文件列表
/// </summary>
/// <param name="prefix">文件前缀/目录名(如:hnt/,空则查询整个Bucket)</param>
/// <param name="isRecursive">是否递归查询子目录(true=递归,false=仅当前目录)</param>
/// <param name="maxKeys">返回的最大文件数量(默认1000,最大不超过1000)</param>
/// <returns>文件名称列表(完整OSS路径)</returns>
/// <exception cref="ArgumentOutOfRangeException">maxKeys≤0或>1000时抛出</exception>
public List<string> ListFilesInOss(string prefix = "", bool isRecursive = false, int maxKeys = 1000)
{
    // 入参校验:maxKeys需在1-1000之间(OSS接口限制)
    if (maxKeys <= 0 || maxKeys > 1000)
        throw new ArgumentOutOfRangeException(nameof(maxKeys), "最大返回数量需在1-1000之间");

    try
    {
        var client = CreateOssClient();
        var listRequest = new ListObjectsRequest(bucketName)
        {
            Prefix = prefix ?? "",          // 前缀(目录),为空则查全部
            Delimiter = isRecursive ? null : "/", // 非递归时用/分隔目录,仅返回当前层级
            MaxKeys = maxKeys               // 最大返回数量
        };

        // 执行列表查询
        var listResult = client.ListObjects(listRequest);
        var fileList = new List<string>();

        // 遍历结果,收集文件名称(排除目录占位符)
        foreach (var objectSummary in listResult.ObjectSummaries)
        {
            // 过滤掉目录本身(以/结尾的是目录,不是文件)
            if (!objectSummary.Key.EndsWith("/"))
            {
                fileList.Add(objectSummary.Key);
            }
        }

        Console.WriteLine($"获取文件列表成功!前缀:{prefix},数量:{fileList.Count}");
        return fileList;
    }
    catch (OssException ex)
    {
        Console.WriteLine($"OSS获取列表异常:错误码={ex.ErrorCode},错误信息={ex.Message}");
        throw;
    }
    catch (Exception ex)
    {
        Console.WriteLine($"获取文件列表失败:{ex.Message}");
        throw;
    }
}
  • Prefix:按前缀过滤对象。
  • MaxKeys:最大返回的对象数量。
6. 获取文件的元数据
ObjectMetadata metadata = client.GetObjectMetadata(bucketName, "your-object-name.txt");
Console.WriteLine("文件大小: " + metadata.ContentLength);
Console.WriteLine("文件类型: " + metadata.ContentType);

4. 详细参数解析

PutObject 方法参数详解:
  • bucketName:存储空间名称,必须在阿里云 OSS 中创建并设置权限。
  • objectName:上传的对象名,可以理解为文件的路径。
  • file:本地文件路径,或者是流数据。
ListObjectsRequest 参数详解:
  • Prefix:过滤条件,列出以特定前缀命名的文件。
  • MaxKeys:每次返回的文件数量,最大为1000。
  • Delimiter:分隔符,用于将文件按目录分层返回。

5. 错误处理

在操作 OSS 时,可能会遇到各种错误,可以通过捕获 OssException 来获取更多错误信息:

try
{
    client.PutObject(bucketName, objectName, localFile);
}
catch (OssException ex)
{
    Console.WriteLine("发生错误: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("未知错误: " + ex.Message);
}

6. 生成签名 URL(预签名 URL)

如果你想要生成一个可以在一定时间内访问 OSS 对象的 URL,可以使用以下代码来生成预签名 URL:

DateTime expiration = DateTime.Now.AddMinutes(10);  // 10分钟有效期
string url = client.GeneratePresignedUrl(bucketName, "your-object-name.txt", expiration);
Console.WriteLine("预签名 URL: " + url);

7. 异步操作

C# SDK 也支持异步操作,你可以使用 async 和 await 关键字来执行非阻塞操作:

public async Task UploadFileAsync()
{
    string objectName = "your-object-name.txt";
    string localFile = @"C:\path\to\your\file.txt";
    await client.PutObjectAsync(bucketName, objectName, localFile);
    Console.WriteLine("文件上传成功!");
}

8. 小结

通过 C# SDK 使用阿里云 OSS 时,你只需关心几个核心的操作,如:上传文件、下载文件、列举文件和删除文件等。以上是一些常用的操作方法和参数解析,你可以根据自己的实际需求灵活应用。


👋 关注我!持续分享 C# 实战技巧、代码示例 & 技术干货

C# 操作阿里云对象存储OSS对图片进行上传、删除操作 一、获取对象存储OSS的AccessKey 在控制台对象存储网页中找到右上角的用户信息,点击“AccessKey管理”(下图) 进入到安全信息管理(也就是保存AccessKey的)界面(下图),如果没有AccessKey,需要自己创建。 存储空间可以手动创建,也可以通过代码创建,在该文章中,使用了手动创建,所以没有存储空间创建部分代码。 C#代码操作OSS 一、添加Aliyun.OSS.SDK 在Visual Studio中的Nuget程序包管理器中下载该程序包。(如下图) 二、代码实现 OssUti 阅读详情

相关推荐

C# .net Ueditor实现图片上传到阿里云OSS 对象存储

在学习的时候,项目中需要实现在Ueditor编辑器中将图片上传到云储存中,老师演示的是上传到又拍云存储,既然看了一遍,直接照搬不算本事,不行咱们依葫芦画瓢自己来动手玩玩其它的云存储服务。 现在云计算都很普遍和方便,市场产品也有很多选择,感兴趣的同学可以去搜索下云存储,这里我选择了阿里云的对象存储服务,他们叫阿里云 OSS(Object Storage Service),实现之前我简单

遇见蓝匣子 4774

c#窗体程序实现远程连接阿里云OSS存储

主要的功能就是通过窗体程序远程连接了阿里云OSS对象存储,利用阿里云接口实现了对OSS的基本操作:本地路径文件上传到阿里云存储以及云存储上的文件下载到本地路径。相信这是很多涉及到阿里云服务器或者阿里云存储都会用到的最主要的功能,因为时间有限所以窗体程序页面比较简洁,欢迎各位大佬在这个想法的基础下将界面和功能设计的更加美观、丰富。这个程序的比较熬时间的地方还是在阿里云OSS的配置方面,如果第一次接触是需要很长时间去了解阿里云相关产品的使用规则的,希望这篇文章能够给各位大佬带来一点思路。

张哈哈的博客 1488

阿里云OSSC#版本

使用C#对超过5G的内容上传至阿里云OSS库中,源码,请参考

C#如何将本地文件上传至阿里云OSS中

c#如何将本地文件上传至OSS中,以及如何下载Aliyun.OSS.dll

weixin_42738354的博客 2470

阿里云OSS操作c#适用SDK

用于通过accessKeyId和accessKeySecret操作阿里云OSS进行文件上传下载等,包含示例代码

C#版OSS操作实例

详细开发API https://docs.aliyun.com/?spm=5176.2020520130.105.2.V5Enah#/pub/oss/api-reference/abstract 实际接口情况以下载的API说明PDF为标准, API说明网页的有些方法未确定是否存在. .net SDK说明: https://docs.aliyun.com/?spm=5176.2020520130.105.2.V5Enah#/pub/oss/sdk/dotnet-sdk&preface .net SDK开发包: https://docs.aliyun.com/?spm=5176.2020520130.105.2.V5Enah#/pub/oss/sdk/sdk-download&dotnet 开发时下载它的SDK说明PDF和.net SDK源码, 对照Demo.

.NET C# 数据文件自动备份至阿里OSS代码

NET C# 本地服务器文件自动备份至阿里OSS代码

weixin_41999297的博客 972

告别JTAG!用Artix-7和SPI Flash实现FPGA远程升级的保姆级教程

本文详细介绍了如何利用Artix-7 FPGA和SPI Flash实现FPGA远程升级(OTA)的完整方案。通过硬件连接、Vivado工程配置和STM32模拟更新等步骤,帮助开发者告别传统的JTAG烧录方式,实现高效、安全的远程固件更新,特别适用于嵌入式系统开发中的现场维护场景。

weixin_33964987的博客 364

阿里云OSS SDK使用教程

阿里云OSS SDK使用教程 项目地址:https://gitcode.com/gh_mirrors/al/alibabacloud-oss-sdk 项目介绍 阿里云OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。alibabacloud-oss-sdk是阿里云官方提供的OSS SDK,支持多种编程语言,包括Java、Python、Go、...

gitblog_00269的博客 1507

单精度浮点数存储、双精度浮点数存储

单精度浮点数存储、双精度浮点数存储

fancynthia的博客 1306

从零构建RK3568视频处理管线:C++ V4L2捕获与RKMPP硬编解码实战

本文详细介绍了在RK3568平台上,使用C++语言从零构建高性能视频处理管线的实战过程。核心内容包括通过V4L2接口高效捕获摄像头视频流,并利用RKMPP硬件编码器实现零拷贝的H.264/H.265硬编码。文章深入讲解了设备初始化、DMA缓冲区管理、编码器参数配置以及主循环协同工作等关键步骤,旨在帮助开发者构建低延迟、高效率的嵌入式视频应用。

weixin_29193359的博客 84

阿里云OSS C SDK 安装及使用指南

阿里云OSS C# SDK 安装及使用指南 aliyun-oss-csharp-sdkAliyun OSS SDK for C#项目地址:https://gitcode.com/gh_mirrors/al/aliyun-oss-csharp-sdk 1. 项目介绍 阿里云OSS C# SDK 是一个用于C#开发者的库,它提供了与阿里云对象存储服务(Object Storage Service)交...

gitblog_00185的博客 745

《寻秦OL》.ani动画逆向解析:二进制结构与Unity重实现

动画文件格式是游戏资源逆向的核心入口,其本质是一组按特定规则组织的二进制数据流。理解魔数识别、字节序、字段对齐与差分编码等底层原理,是解析非标准格式的关键前提。技术价值在于绕过黑盒协议,直接从静态客户端提取可验证的原始语义;典型应用场景包括老游戏复刻、美术资产抢救、引擎跨平台迁移及教学级逆向训练。本文以《寻秦OL》的`.ani`文件为实例,深入剖析其C风格结构布局、GB2312中文命名、16位定点数旋转表示及帧主序差分存储机制,并基于C#在Unity中完成从字节流到AnimationClip的端到端重建,覆

weixin_30368981的博客 640

阿里云OSS代理商:哪些开发语言可以接入阿里云OSS?有SDK示例吗?

阿里云OSS支持多种开发语言SDK,包括Java、Python、PHP、Go、Node.js、C#等,满足不同项目需求。文章介绍了各语言适用场景,并提供了Java、Python、PHP和Node.js的上传文件代码示例。开发者可根据项目特点选择适合的SDK,快速实现文件存储管理功能。阿里云OSS提供的高可用云存储服务,能有效支持从个人项目到企业级应用的数据存储需求。

vx_jusouyun08的博客 1201

ArcGIS Pro 拓扑编辑实战:从‘地图拓扑’到‘共享编辑’,手把手教你批量修改要素

本文详细介绍了ArcGIS Pro中的拓扑编辑功能,从地图拓扑配置到共享编辑技巧,手把手教你如何批量修改要素。通过实战案例展示拓扑编辑在城市规划、地籍管理等场景中的应用,显著提升编辑效率并减少拓扑错误,是现代GIS技术的重要生产力工具。

weixin_30500473的博客 505

ArcGIS新手必看:5分钟搞定等高线转DEM栅格(附完整操作截图)

本文详细介绍了在ArcGIS中将等高线转换为DEM栅格的完整流程,包括CAD数据预处理、TIN转栅格和直接插值法两种核心方法,以及常见问题排查与优化技巧。通过实战案例和操作截图,帮助GIS新手快速掌握这一测绘数据处理的核心技能,提升地形分析和三维可视化效率。

dapp9builder的博客 286

C# 阿里云 OSS 图片上传步骤及浏览器查看方法

C# 阿里云 OSS 图片上传步骤及浏览器查看方法

and_thengood的博客 1927

LDO的原理及测试方法

这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。常见的基本结构利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS))。

shiwei0813的博客 1157

阿里云OSS C SDK开发指南

阿里云OSS C# SDK开发指南 aliyun-oss-csharp-sdkAliyun OSS SDK for C#项目地址:https://gitcode.com/gh_mirrors/al/aliyun-oss-csharp-sdk 1. 项目目录结构及介绍 阿里云对象存储(OSS)C# SDK位于GitHub仓库。以下是基础的目录结构及其简介: src: 主要源代码存放目录。 Al...

gitblog_00785的博客 794

药物对接仿真软件:HADDOCK_(9).结果分析方法

HADDOCK是一种强大的药物对接仿真工具,通过对生成的输出文件进行详细的分析,我们可以验证仿真结果的可靠性,并为进一步优化药物设计提供依据。常见的分析方法包括解读输出文件、使用可视化工具进行结构分析、评估对接模型的稳定性和准确性等。通过这些步骤,我们可以更全面地了解受体和配体的结合模式,从而提高药物设计的成功率。

kkchenjj的博客 1005

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C#、asp.net阿里云(aliyun)OSS上传文件

首先引用阿里云开源Nuget包Aliyun.OSS.SDK 然后在OSS中配置使用OSS上传必要的配置,具体文档查看地址:https://help.aliyun.com/document_detail/31947.html?spm=a2c4g.11186623.6.1574.32fe34704pHexv 这些都已具备后,直接进行上传,代码示例如下: static string accessKeyId = ConfigurationManager.AppSettings["AccessKeyId

suxuelian的博客 4603

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

阿里云OSS使用STS临时授权访问

阿里云控制台配置 1. 创建用户 2. 创建角色 3. 创建权限策略 此为权限策略的脚本,表示对your-Bucket-name有读写权限,修改your-Bucket-name成你的Bucket。 { "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:DeleteObje...

yangkangv的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Unity接入 阿里云OSS 腾讯云Cos的SDK,实现上传文件功能

概念 Bucket(存储空间):Bucket是用户用来管理所存储Object的存储空间。每个用户可以拥有多个Bucket。Bucket的名称在OSS的范围内必须是全局唯一的,一旦创建之后无法修改名称。Bucket内部的Object数目是没有限制 Object(对象,文件):Object是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件 Bucket命名规范: 1,只能包括小写字母,数字和短横线(-) 2,必须以小写字母或者数字开头 3,长度必须在3-63字节之间 Object命名规范: 1,

weixin_44806700的博客 4565

C#阿里云OSS——存储

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、OSS是什么?二、使用步骤1、开通OSS和创建AccessKey2、基础文件配置总结 一、OSS是什么? 二、使用步骤 1、开通OSS和创建AccessKey 开通OSS存储不做过多赘述。 首先先去阿里云RAM访问控制台,点击创建账户 记得勾选编程访问 创建完成后仅显示一次AccessKey的信息,需要妥善保存这些信息 如遇报错 1、Create bucket failed, Put bucket request is

qq_35872690的博客 2994

阿里云OSS C SDK常见问题解决方案

阿里云OSS C# SDK常见问题解决方案 项目基础介绍 阿里云OSS C# SDK是一个用于与阿里云对象存储服务(OSS)进行交互的C#语言SDK。该项目基于OSS的REST API构建,旨在为C#开发者提供一个简单易用的接口来管理和操作OSS存储资源。当前版本为2.14.0,支持Windows、Linux/Mac以及.NET Core环境。 主要编程语言 该项目的主要编程语言是C#。 新手使用...

gitblog_00033的博客 525

阿里云 OSS C# SDK RAM如何获取临时访问密钥

本文介绍了阿里云OSS C#开发中如何安全获取和使用临时访问密钥的最佳实践。主要内容包括: 阿里云控制台RAM/STS配置步骤: 创建RAM用户并授予STS调用权限 创建RAM角色并配置OSS操作权限 为角色设置自定义权限策略 C#项目环境准备: 安装必要的NuGet包(Aliyun.Acs.Core、Aliyun.Acs.Sts、Aliyun.OSS.SDK.NetCore) 完整代码实现: 通过STS的AssumeRole接口获取临时密钥 使用临时密钥操作OSS资源 关键安全优势: 避免硬编码永久密钥

bugcome的博客 1125
上一篇: C# 程序结构详解:从 Hello World 开始
下一篇: C# 基本语法详解:从面向对象到 C# 9 顶级语句一文入门
bugcome_com
博客等级 码龄3年 32粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bugcome_com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值