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

要想将文件上传至OSS,那么阿里云的AccessKeyId和AccessKeySecret必不可少

一.去哪找AccessKeyId和AccessKeySecret

进入阿里云工作台,点击右上角头像,选择AccessKey管理,就能看到ID了在这里插入图片描述
但是Secret目前阿里云不支持查看了,如果你不知道密码的话,可以新创建一个AccessKey,它会将新的ID和Secret都告诉你,并提供一个csv文件,csv文件保存好哦,后续可以直接在文件中查看ID和密码

二.上传至OSS还需要什么信息

除了上面说的ID和Secret,还需要EndpointBucket名字
1.Endpoint在哪找?
点击工作台里的对象存储OSS,选择左侧栏的Bucket列表,点击你想要上传文件的Bucket,然后点击概述,最下方就能看到提供的访问端口,这里复制外网接口即可
在这里插入图片描述
需要注意的是,最好将Bucket的读写权限设置为公共读写,否则你最后拿到的链接会有时间或权限的约束。
如果你还没有Bucket,新创建一个就行
在这里插入图片描述
我是选择了红框里的几个选项,供参考。
2.Bucket去哪找?
Bucket名字就很好找了,就是Bucket的名字

三.安装阿里云OSS SDK

  1. Unity项目中,想将文件上传至OSS,必须要下载阿里云OSS SDK。这里选择**.Net**的安装包https://oss.console.aliyun.com/sdk
    在这里插入图片描述
  2. 下载解压后,找到此文件,在VS中打开
    在这里插入图片描述
    打开后,在此文件上右键,选择属性
    在这里插入图片描述
    将程序集名称改为Aliyun.OSS在这里插入图片描述
    改好后,点击菜单栏的生成生成解决方案,便会生成一个dll文件
    在这里插入图片描述
    到此,返回刚才解压的SDK文件夹,去这个路径下,找到Aliyun.OSS.dll文件

在这里插入图片描述
将此文件拽入你的Unity项目即可,可放在任意位置
这里我是放在了Assets文件夹下
在这里插入图片描述

三.如何上传至OSS

上面这四个元素都找到之后,先创建一个类吧 ,将四个变量放进去

public class Config
{public const string AccessKeyId = "XXXXX";public const string AccessKeySecret = "XXXXX";public const string EndPoint = "oss-cn-beijing.aliyuncs.com";public const string Bucket = "XXXXX";}

之后,来创建OssClient对象,他可以帮助我们完成上传操作,具体代码如下

//必须要将Aliyun.OSS.dll文件放入Unity项目中,才能生效,否则会报错
using Aliyun.OSS;
using Aliyun.OSS.Common;// Oss对象,文件名变量,文件路径 
private OssClient ossClient;
//文件名需要带后缀的,如 1.txt
public string fileName = "";
public string filePath = "";try{ossClient = new OssClient(Config.EndPoint, Config.AccessKeyId, Config.AccessKeySecret);//直接放在指定Bucket中ossClient.PutObject(Config.Bucket, fileName, filePath);//放在指定Bucket下的mp3文件夹中,如果没有此文件夹,会自动创建//ossClient.PutObject(Config.Bucket, "mp3/" + fileName, filePath);Debug.Log("本地上传成功:" + fileName);}
catch (OssException e)
{Debug.Log("本地上传报错:" + e.Message);
}
catch (System.Exception e)
{Debug.Log("本地上传报错:" + e.Message);
}

上面两个代码块,即可实现本地文件的OSS上传,你可以去阿里云查看一下是否上传成功

四.怎么拿到OSS上文件的链接

那我们将文件上传至OSS, 已知文件名即fileName和EndPoint,便可自行拼凑出链接

string url = "https://" + Config.Bucket + "." + Config.EndPoint + "/" + fileName;
Debug.Log("上传至oss后,资源对应的url:" + url);

如果你上传到了指定Bucket下的某个文件夹中,例如上传至mp3文件夹,拼的时候带着文件夹名字就ok啦

string url = "https://" + Config.Bucket + "." + Config.EndPoint + "/mp3/" + fileName;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

labelme读取文件顺序

labelme版本4.5.10 labelme的目录结构 labelme通过在__main__.py中调用app.py,启动程序读取文件列表的部分在app.py的imageList函数中 def imageList(self):lst []for i in range(self.fileListWidget.count()):item self.fileListWidget.item(i)lst.append(ite…

Java学习笔记基础知识

一.数据类型 1.基本数据类型 基本数据类型 大小 范围 byte(字节整型) 1byte(8bit) -128(-2^7)~127(2^7-1) short(短整型) 2byte -2^15~2^15-1 int(整型) 4byte -2^31~2^31-1 long(长整型) 8byte -2^63~2^63-1 float(单精度浮点数) 4byte -3.4E38~3.4E38 double(双精度浮…

lua配置表优化以及元表

table1 {[100] {Hung 0,IDType 7,InitMapID 10000,Name "荣誉阶梯",Timeout 0},[101] {Hung 0,IDType 0,InitMapID 10100,MinLv 50,Name "盘山道",NumEveryDay 1,PworldID 101,Timeout 1200,Type 2} }local __default_values {Cheats …

【SpringCloud】5、Spring Cloud Gateway网关路由规则

Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。 Spring Cloud Gateway包含许多内置的Route Predicate Factories。所有这些断言都匹配 HTTP 请求的不同属性。多个 Route Predicate Factories 可…

应用系统如何集成和扩展开源工作流引擎

目前主流的开源流程引擎有activiti、flowable、camunda等,这几个开源流程引擎的版本很多,哪个开源流程引擎哪个版本的功能更多、性能更好,该如何选择请参考:https://lowcode.blog.csdn.net/article/details/116405594 无论您选择…

AR技术改变汽车行业,AR看车、AR车书、AR售后维修震撼登场!

引言: 随着中国汽车市场步入存量发展阶段,车企正迎来新的机遇和挑战。这一发展意味着庞大的汽车后市场需求,同时也要求企业和经销商能够快速响应市场需求,提供高质量的服务。而培养具备全面技能的成熟售后服务人员需要企业投入大…

java基础之---动态代理

1、代理是什么? 在不改变源代码的情况下,对类进行了功能等扩展。在代理类的前后方法添加任何你想要添加的内容。 2、静态代理跟动态代理区别 静态代理是在编译期确定。 动态代理需要在运行期确定的。反射是动态代理的一种。经常被用在框架中&#xff…

HubSpot电子邮件:数字化时代的营销利器

在当今数字化时代,电子邮件仍然是企业与客户之间沟通的重要手段之一。而HubSpot电子邮件作为HubSpot全方位解决方案的一部分,不仅简化了营销流程,更为企业提供了强大的工具,助力建立更紧密的客户关系。本文将深入探讨HubSpot电子邮…

vs2019+qt+opencv+open3d

开发环境 VS 2019, 一开始用这个,后来就一直用了Qt 5.9.9, Qt Creator,有一个项目是用这个版本开发的,所以我后来也沿用这个版本opencv 3.4.5, 有一项功能必须这个版本才能使用open3d 0.15.2, 曾经编译了这个版本,后面…

深度学习在工地安全帽识别技术的应用与展望

当我们谈论“工地安全帽识别”时,实际上我们在探讨的是如何利用深度学习图像识别技术来提高建筑工地的安全性。这一技术的应用可以显著提高工地安全管理的效率和有效性,是现代建筑工程管理中不可或缺的一部分。以测评的北京富维图像的工地安全帽识别为例…

小兔鲜儿 uniapp - SKU 模块

目录 存货单位(SKU)​ 插件市场​ 下载 SKU 插件​ 使用 SKU 插件​ 插件类型问题​ 核心业务​ 渲染商品规格​ 打开弹窗交互​ 渲染被选中的值​ 存货单位(SKU)​ SKU 概念 存货单位(Stock Keeping Unit&a…

Java之反射

一、反射的概述 是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意属性和方法; 这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 通俗的理…

Python使用multiprocessing模块实现多进程并发处理大数据量

使用multiprocessing模块实现多进程并发地遍历arr1中的值,从arr2中查找是否存在的步骤如下: 导入multiprocessing模块:import multiprocessing 创建查找函数:定义一个函数,用于在arr2中查找arr1的值。可以在这个函数中…

【JVM】Java虚拟机JVM堆内存调优

Java虚拟机JVM堆内存调优 一、了解堆内存结构1.1 JDK 1.7堆内存1.2 JDK 1.8堆内存二、设置合理的堆内存大小(-Xms和-Xmx)三、调整新生代与老年代比例(-XX:NewRatio)四、新生代中Eden区与Survivor区比例(-XX:SurvivorRatio)五、启用并调整并行收集器或并发收集器六、设置垃…

基金撰写过程中是否存在哪些问题?技术路线图如何设计才能吸引评阅专家的目光?

随着社会经济发展和科技进步,基金项目对创新性的要求越来越高。申请人需要提出独特且有前瞻性的研究问题,具备突破性的科学思路和方法。因此,基金项目申请往往需要进行跨学科的技术融合。申请人需要与不同领域结合,形成多学科交叉…

BUUCTF--gyctf_2020_borrowstack1

这是一题栈迁移的题目,先看看保护: 黑盒测试: 用户可输入两次内容,接着看看IDA中具体程序流程: 我们看到溢出内容只有0x10的空间给我们布局,这显然是不足以我们布置rop的。因此肯定就是栈迁移了。迁到什么地…

Vue3地图选点组件

Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…

后端处理文件上传:对比用Controller层和Service层的优缺点

当涉及文件上传时&#xff0c;有两种主要的处理方式&#xff1a;将文件上传逻辑放在控制器(Controller)层和将文件上传逻辑放在服务(Service)层。以下是这两种方式的优缺点&#xff1a; 将文件上传逻辑放在控制器(Controller)层&#xff1a; 优点&#xff1a; 简化代码结构&a…

error:0308010C:digital envelope routines::unsupported 前端项目错误

直接启动命令中增加&#xff1a; SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve

猫咪主食冻干K9、希喂、SC生骨肉冻干哪款好?详细对比测评这三款产品

随着科学养猫的观念深入人心&#xff0c;越来越多的铲屎官开始关注猫咪主食的营养与健康。主食冻干&#xff0c;作为一种模拟猫咪原始猎食的食品&#xff0c;因其高营养保留而受到广大猫奴的喜爱。相比传统的膨化猫粮&#xff0c;主食冻干更符合猫咪的饮食天性&#xff0c;提供…