Unity 上传文件到阿里云 对象存储OSS服务器

首先登录阿里云 免费试用–对象存储OSS --点击立即试用,可以有三个月的免费试用
在这里插入图片描述
创建Buket
在这里插入图片描述
在这里插入图片描述
新建AccessKey ,新建完成后,会有一个CSV文件,下载下来,里面有Key ,代码中需要用到
在这里插入图片描述
下载SDK
在这里插入图片描述
双击打开 sln文件,使用VS打开,右键项目–属性,修改程序集名字,然后点击生成–生成解决方案,这时 sdk/bin 里面就会有 Aliyun.OSS.dll了 然后把这个dll拖入到Unity 工程里即可(任意位置都可以),
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

剩下的就写代码了

using Aliyun.OSS;
using Aliyun.OSS.Common;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;public class AliyunOSSWithProcess : MonoBehaviour
{// UI 的相关组件变量public Image processImage;// Oss对象,文件路径,文件名变量private OssClient ossClient;string filePath;string fileName;// 进度的回调函数,以及线程,进度变量Action<float> PutProcessCallback;Thread putLocalThread;float putProcess = 0;// Start is called before the first frame updatevoid Start(){// new OssClient 对象ossClient = new OssClient(Config.EndPoint, Config.AccessKeyId, Config.AccessKeySecret);string path = Application.streamingAssetsPath + "/Test.txt";// 多线程进度上传函数PutObjectWithProcessByThread((process) =>{Debug.Log("上传进度为:" + process);},path,Path.GetFileName(path.Trim()));}// Update is called once per framevoid Update(){// 因为 UI 只能在主线程中,所以在 Update 中监控进度给 UIif (PutProcessCallback != null) {processImage.fillAmount = putProcess;if (putProcess >= 1) {PutProcessCallback = null;putProcess = 0;}}}/// <summary>/// 子线程上传文件,避免卡顿/// </summary>/// <param name="action"></param>/// <param name="filePath"></param>/// <param name="fileName"></param>public void PutObjectWithProcessByThread(Action<float> action, string filePath, string fileName){PutProcessCallback = action;this.fileName = fileName;this.filePath = filePath;putLocalThread = new Thread(PutObjectWithProcess);putLocalThread.Start();}/// <summary>/// 获取上传进度/// </summary>void PutObjectWithProcess(){try{using (var fs = File.Open(filePath, FileMode.Open)){PutObjectRequest putObjectRequest = new PutObjectRequest(Config.Bucket, fileName, fs);putObjectRequest.StreamTransferProgress += PutStreamProcess;ossClient.PutObject(putObjectRequest);Debug.Log("带有进度本地文件上传成功");}}catch (OssException e){Debug.Log("带有进度本地文件数据上传错误:" + e);}catch (Exception e){Debug.Log("带有进度本地文件数据上传错误:" + e);}finally{// 终止进程putLocalThread.Abort();}}/// <summary>/// 文件上传流事件/// </summary>/// <param name="sender"></param>/// <param name="args"></param>void PutStreamProcess(object sender, StreamTransferProgressArgs args){putProcess = (args.TransferredBytes * 100 / args.TotalBytes) / 100.0f;PutProcessCallback.Invoke(putProcess);}
}public class Config
{public const string AccessKeyId = "在上面提到的CSV文件里"; public const string AccessKeySecret = "在上面提到的CSV文件里";public const string EndPoint = "oss-cn-beijing.aliyuncs.com";public const string Bucket = "testbuglog";}

在这里插入图片描述
然后脚本挂到场景里,创建一个Image, 文件路径已经要带后缀名,然后运行就可以了,
在这里插入图片描述

借鉴文章

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

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

相关文章

STM32(HAL库)通过ADC读取MQ2数据

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 ADC外设配置 2.3 串口外设配置 2.4 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 ADC数据采集 3.3 主函数代 3.4 效果展示 1、简介 本文通过STM32F103C8T6单片机通过HAL库方式对M…

解决Git fatal: refusing to merge unrelated histories报错

问题描述 当在远程建立了一个仓库&#xff0c;并且远程的仓库已经初始化了的情况&#xff0c;使用 git remote add origin gitgithub.com:xxx/xxx.git命令添加远程仓库后&#xff0c;执行git pull,然后提示如下&#xff1a; 大致意思就是需要关联我们的本地和远程分支。按照…

Nginx正向代理和反向代理详解

目录 一、什么是正向代理&#xff1f; 二、什么是反向代理&#xff1f; 三、正向代理和反向代理的作用 一、什么是正向代理&#xff1f; 正向代理&#xff0c;“它代理的是客户端”&#xff0c;是一个位于客户端和目标服务器之间的服务器&#xff0c;为了从目标服务器取得内…

给httprunnermanager接口自动化测试平台加点功能(七)

文章目录 一、背景1.1、用例列表test_list1.2、套件列表suite_list 二、实现2.1、用例edit页面2.2、套件edit页面 三、数据结构3.1、更新数据结构 四、知识扩展五、总结 一、背景 前面几章优化&#xff0c;从功能bug的优化、到列表的优化、还有字段的优化&#xff0c;暂时满足…

数据从发出到接收的细节介绍{封装与解封装}

系列文章目录 数通王国历险记&#xff08;5&#xff09; 目录 前言 一&#xff0c;数据封装的全过程 1.1&#xff0c;应用层的封装形式 1.2&#xff0c;传输层的封装形式 理解&#xff1a; 1.3&#xff0c;网络层的封装形式 理解&#xff1a; 1.4&#xff0c;数据链路层…

编程导航算法通关村第 1关 | 两个链表的第一个公共节点

编程导航算法通关村第 1关 | 白银挑战 剑指 Offer 52. 两个链表的第一个公共节点 集合/map 将headA中的链表&#xff0c;放在一个set集合中&#xff0c; 依次遍历headB&#xff0c; headB中第一个包含在set集合中的节点就是第一个公共子节点 ListNode getIntersectionNode(L…

WireShark

文章目录 IP协议部分协议对应协议号路由器IP分片IP分片的缺点 TCP协议[TCP MSS](https://blog.csdn.net/meihualing/article/details/113739693) UDP协议ARP ICMPDHCPDNSFTP wireshark可以学习网络协议&#xff0c;解决一些问题 IP协议 IP指网际互连协议&#xff0c;Internet P…

ROS节点通信Demo

0 开始之前 确保你已经安装了ROS (Robot Operating System)。 1 第一步&#xff1a; 创建一个ROS包 在开始编程前&#xff0c;我们首先创建一个新的ROS包(package)。移动到你的catkin workspace的 src 文件夹下&#xff0c;然后运行以下命令&#xff1a; cd ~/catkin_ws/sr…

Sentinel整合OpenFegin

之前学习了openFeign的使用&#xff0c;我是超链接 现在学习通过Sentinel来进行整合OpenFegin。 引入OpenFegin 我们需要在当前的8084项目中引入对应的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

Spring:表达式语言

Spring EL 概述使用概述 Spring 表达式(Spring EL) 是一种功能强大的表达式语言,以 #{ 表达式 } 作为定界符,用于在运行时对对象进行访问和操作。通过使用 Spring 表达式达到简化开发、减少逻辑或配置的编写的目的。 使用 Spring EL 主要可以引用 bean ,调用其属性和方…

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

ES系列--es初探

一、前言 一般传统数据库&#xff0c;全文检索都实现的很鸡肋&#xff0c;因为一般也没人用数据库存文本字段。进 行全文检索需要扫描整个表&#xff0c;如果数据量大的话即使对 SQL 的语法优化&#xff0c;也收效甚微。建 立了索引&#xff0c;但是维护起来也很麻烦&#xff0…