要想将文件上传至OSS,那么阿里云的AccessKeyId和AccessKeySecret必不可少
一.去哪找AccessKeyId和AccessKeySecret
进入阿里云工作台,点击右上角头像,选择AccessKey管理,就能看到ID了
但是Secret目前阿里云不支持查看了,如果你不知道密码的话,可以新创建一个AccessKey,它会将新的ID和Secret都告诉你,并提供一个csv文件,csv文件保存好哦,后续可以直接在文件中查看ID和密码
二.上传至OSS还需要什么信息
除了上面说的ID和Secret,还需要Endpoint和Bucket名字
1.Endpoint在哪找?
点击工作台里的对象存储OSS,选择左侧栏的Bucket列表,点击你想要上传文件的Bucket,然后点击概述,最下方就能看到提供的访问端口,这里复制外网接口即可
需要注意的是,最好将Bucket的读写权限设置为公共读写,否则你最后拿到的链接会有时间或权限的约束。
如果你还没有Bucket,新创建一个就行
我是选择了红框里的几个选项,供参考。
2.Bucket去哪找?
Bucket名字就很好找了,就是Bucket的名字
三.安装阿里云OSS SDK
- Unity项目中,想将文件上传至OSS,必须要下载阿里云OSS SDK。这里选择**.Net**的安装包https://oss.console.aliyun.com/sdk
- 下载解压后,找到此文件,在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 = "";
//filePath为本地文件路径
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;