当前位置:网站首页>C Alibaba cloud OSS file upload, download and other operations (unity is available)
C Alibaba cloud OSS file upload, download and other operations (unity is available)
2022-07-07 15:43:00 【sky954260193】
link : Official website SDK download .
OSS Global configuration
public class OssConfig
{
public const string AccessKeyId = "xxxxxxxxx";
public const string AccessKeySecret = "xxxxxxxxxxx";
public const string EndPoint = "xxxxxxxxxxxx";
public const string Bucket = "xxxxxxxxxxxxxx";
}
OSS Local examples
using Aliyun.OSS;
namespace AliyunOSS
{
public class LocalOSSClient
{
private static OssClient _ossClient;
private static readonly object _synclock = new object();
public static OssClient OssClient
{
get
{
if (_ossClient == null)
{
lock (_synclock)
{
if (_ossClient == null)
{
_ossClient = new OssClient(OssConfig.EndPoint, OssConfig.AccessKeyId,
OssConfig.AccessKeySecret);
}
}
}
return _ossClient;
}
}
}
}
Upload files
using System;
using System.Threading;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using System.IO;
namespace AliyunOSS
{
public class AliyunOSSUpLoader
{
public static void UpLoad(string fullFilePath, string ossPath, Action complete, Action<float> process = null)
{
PutObjectWithProcessByThread(fullFilePath, ossPath, complete, process);
}
public void UpLoad(string fullFilePath, string ossPath, Action complete)
{
PutObjectWithProcessByThread(fullFilePath, ossPath, complete);
}
private static void PutObjectWithProcessByThread(string fullFilePath, string ossPath, Action complete, Action<float> action = null)
{
Thread putLocalThread = null;
putLocalThread = new Thread(() =>
{
try
{
using (var fs = File.Open(fullFilePath, FileMode.Open))
{
PutObjectRequest putObjectRequest = new PutObjectRequest(OssConfig.Bucket, ossPath, fs);
putObjectRequest.StreamTransferProgress += (obg, args) =>
{
float putProcess = (args.TransferredBytes * 100 / args.TotalBytes) / 100.0f;
action?.Invoke(putProcess);
if (putProcess >= 1)
{
complete?.Invoke();
putObjectRequest.StreamTransferProgress = null;
}
};
LocalOSSClient.OssClient.PutObject(putObjectRequest);
}
}
catch (OssException e)
{
Console.WriteLine(" Upload error :" + e);
}
catch (Exception e)
{
Console.WriteLine(" Upload error :" + e);
}
finally
{
putLocalThread.Abort();
}
});
putLocalThread.Start();
}
}
Upload files URL get
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AliyunOSS
{
/// <summary>
/// Get the download link of the file through the file name
/// </summary>
public class OssUrlUtility
{
public static string GetFileUrl(string fileFullName)
{
string url = "http://" + OssConfig.Bucket + "." + OssConfig.EndPoint + "/" + fileFullName;
return url;
}
}
}
File download
using System;
using System.IO;
namespace AliyunOSS
{
public class OSSDownLoadHandler
{
/// <summary>
///
/// </summary>
/// <param name="objName"> OOS The full path of the file to be downloaded stored in the server </param>
/// <param name="saveFullPathWithExtension"> File path stored locally , Suffixes are required </param>
public static void DownLoadFiles(string objName, string saveFullPathWithExtension)
{
var client = LocalOSSClient.OssClient;
try
{
var obj = client.GetObject(OssConfig.Bucket, objName);
using (var requestStream = obj.Content)
{
byte[] buf = new byte[1024];
var fs = File.Open(saveFullPathWithExtension, FileMode.OpenOrCreate);
var len = 0;
while ((len = requestStream.Read(buf, 0, 1024)) != 0)
{
fs.Write(buf, 0, len);
}
fs.Close();
}
Console.WriteLine("Get object succeeded:" + saveFullPathWithExtension);
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Get object failed. {0}", ex.Message));
}
}
}
}
file information
using System;
using System.Collections.Generic;
using Aliyun.OSS;
using Aliyun.OSS.Common;
namespace AliyunOSS
{
public class OSSFiles
{
/*ListObjectsRequest Parameters : objectSummaries Limit the returned file meta information . prefix The prefix of this query result . delimiter A character that groups file names . marker Indicate the starting point of the listed documents . maxKeys List the maximum number of files . nextMarker Next time, list the starting point of the file . isTruncated Indicates whether the enumeration file is truncated . There is no truncation after enumeration , The return value is false. There is truncation before enumeration , The return value is true. commonPrefixes With delimiter ending , A collection of files with a common prefix . encodingType Indicate the type of encoding used in the returned result .*/
/// <summary>
/// Simple column retrieval 100 strip
/// </summary>
public static void ShowSampleOSSFileList()
{
var client = LocalOSSClient.OssClient;
try
{
var listObjectsRequest = new ListObjectsRequest(OssConfig.Bucket);
// Simply list the files in the storage space , Default return 100 Bar record .
var result = client.ListObjects(listObjectsRequest);
foreach (var summary in result.ObjectSummaries)
{
Console.WriteLine(string.Format("File name:{0}", summary.Key));
}
}
catch (Exception ex)
{
Console.WriteLine(string.Format("List objects failed. {0}", ex.Message));
}
}
public static void ShowSpecifyFiles(int maxKeys = 200)
{
var client = LocalOSSClient.OssClient;
try
{
var listObjectsRequest = new ListObjectsRequest(OssConfig.Bucket)
{
// Maximum return 200 Bar record .
MaxKeys = maxKeys,
};
var result = client.ListObjects(listObjectsRequest);
Console.WriteLine("List objects succeeded");
foreach (var summary in result.ObjectSummaries)
{
Console.WriteLine(summary.Key);
}
}
catch (Exception ex)
{
Console.WriteLine(string.Format("List objects failed, {0}", ex.Message));
}
}
public static void ShowPrefixFiles(string prefix)
{
var client = LocalOSSClient.OssClient;
try
{
var keys = new List<string>();
ObjectListing result = null;
string nextMarker = string.Empty;
do
{
var listObjectsRequest = new ListObjectsRequest(OssConfig.Bucket)
{
Marker = nextMarker,
MaxKeys = 100,
Prefix = prefix,
};
result = client.ListObjects(listObjectsRequest);
foreach (var summary in result.ObjectSummaries)
{
keys.Add(summary.Key);
}
nextMarker = result.NextMarker;
} while (result.IsTruncated);
foreach (var fSummary in result.ObjectSummaries)
{
Console.WriteLine(fSummary.Key);
}
Console.WriteLine(string.Format("List objects of bucket:{0} succeeded ", OssConfig.Bucket));
}
catch (OssException ex)
{
Console.WriteLine(string.Format("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId));
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Failed with error info: {0}", ex.Message));
}
}
public static void ShowSpecifyExtensionFiles(string maker)
{
var client = LocalOSSClient.OssClient;
try
{
var keys = new List<string>();
ObjectListing result = null;
string nextMarker = maker;
do
{
var listObjectsRequest = new ListObjectsRequest(OssConfig.Bucket)
// If you want to increase the number of returned files , You can modify MaxKeys Parameters , Or use Marker Parameters are read in several times .
{
Marker = nextMarker,
MaxKeys = 100,
};
result = client.ListObjects(listObjectsRequest);
foreach (var summary in result.ObjectSummaries)
{
keys.Add(summary.Key);
}
nextMarker = result.NextMarker;
// If IsTruncated by true, NextMarker Will be the starting point for the next reading .
} while (result.IsTruncated);
foreach (var fSummary in result.ObjectSummaries)
{
Console.WriteLine(fSummary.Key);
}
Console.WriteLine(string.Format("List objects of bucket:{0} succeeded ", OssConfig.Bucket));
}
catch (OssException ex)
{
Console.WriteLine(string.Format("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId));
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Failed with error info: {0}", ex.Message));
}
}
}
}
File operations
using System;
using System.Collections.Generic;
using Aliyun.OSS;
using Aliyun.OSS.Common;
namespace AliyunOSS
{
public class AliyunOSSHelper
{
/// <summary>
/// Delete single file
/// </summary>
/// <param name="objectName"></param>
public static void DeleteFile(string objectName)
{
var client = LocalOSSClient.OssClient;
try
{
// Delete file .
client.DeleteObject(OssConfig.Bucket, objectName);
Console.WriteLine("Delete object succeeded");
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Delete object failed. {0}", ex.Message));
}
}
/// <summary>
///
/// </summary>
/// <param name="files"></param>
/// <param name="quietMode"> Set to verbose mode , Return to the list of all deleted files .</param>
public static void DeleteMultiFiles(List<string> files, bool quietMode = false)
{
var client = LocalOSSClient.OssClient;
try
{
var request = new DeleteObjectsRequest(OssConfig.Bucket, files, quietMode);
var result = client.DeleteObjects(request);
if ((!quietMode) && (result.Keys != null))
{
foreach (var obj in result.Keys)
{
Console.WriteLine(string.Format("Delete successfully : {0} ", obj.Key));
}
}
Console.WriteLine("Delete objects succeeded");
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Delete objects failed. {0}", ex.Message));
}
}
public static bool ExistFile(string objectName)
{
bool exist = false;
try
{
exist = LocalOSSClient.OssClient.DoesObjectExist(OssConfig.Bucket, objectName);
Console.WriteLine("Object exist ? " + exist);
return exist;
}
catch (OssException ex)
{
Console.WriteLine(string.Format("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId));
return exist;
}
catch (Exception ex)
{
Console.WriteLine(string.Format("Failed with error info: {0}", ex.Message));
return exist;
}
}
}
}
边栏推荐
- MySQL bit type resolution
- 2022全开源企业发卡网修复短网址等BUG_2022企业级多商户发卡平台源码
- 知否|两大风控最重要指标与客群好坏的关系分析
- 【数字IC验证快速入门】18、SystemVerilog学习之基本语法5(并发线程...内含实践练习)
- How to release NFT in batches in opensea (rinkeby test network)
- What are PV and UV? pv、uv
- Tkinter after how to refresh data and cancel refreshing
- [target detection] yolov5 Runtong voc2007 data set
- Using eating in cocos Creator
- Implementation of crawling web pages and saving them to MySQL using the scrapy framework
猜你喜欢
Keil5 does not support online simulation of STM32 F0 series
MySQL bit type resolution
Syntax of generator function (state machine)
There is a cow, which gives birth to a heifer at the beginning of each year. Each heifer has a heifer at the beginning of each year since the fourth year. Please program how many cows are there in the
Streaming end, server end, player end
使用cpolar建立一个商业网站(2)
Create lib Library in keil and use lib Library
postman生成时间戳,未来时间戳
有钱人买房就是不一样
[quick start of Digital IC Verification] 20. Basic grammar of SystemVerilog learning 7 (coverage driven... Including practical exercises)
随机推荐
2. Basic knowledge of golang
MySQL bit类型解析
What is data leakage
The significance of XOR in embedded C language
[markdown grammar advanced] make your blog more exciting (IV: set font style and color comparison table)
Ida Pro reverse tool finds the IP and port of the socket server
Do not use memset to clear floating-point numbers
Share the technical details of super signature system construction
Cut ffmpeg as needed, and use emscripten to compile and run
There is a cow, which gives birth to a heifer at the beginning of each year. Each heifer has a heifer at the beginning of each year since the fourth year. Please program how many cows are there in the
2. Heap sort "hard to understand sort"
unnamed prototyped parameters not allowed when body is present
Syntax of generator function (state machine)
Yunxiaoduo software internal test distribution test platform description document
什麼是數據泄露
【数字IC验证快速入门】23、SystemVerilog项目实践之AHB-SRAMC(3)(AHB协议基本要点)
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
Cocos makes Scrollview to realize the effect of zooming in the middle and zooming out on both sides
Do you know the relationship between the most important indicators of two strong wind control and the quality of the customer base
知否|两大风控最重要指标与客群好坏的关系分析