当前位置:网站首页>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;
}
}
}
}
边栏推荐
- [quick start of Digital IC Verification] 23. AHB sramc of SystemVerilog project practice (3) (basic points of AHB protocol)
- Stm32f103c8t6 PWM drive steering gear (sg90)
- 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
- [quickstart to Digital IC Validation] 20. Basic syntax for system verilog Learning 7 (Coverage Driven... Including practical exercises)
- 大表delete删数据导致数据库异常解决
- ./ Functions of configure, make and make install
- Mathematical modeling -- what is mathematical modeling
- Annexb and avcc are two methods of data segmentation in decoding
- 【原创】一切不谈考核的管理都是扯淡!
- 知否|两大风控最重要指标与客群好坏的关系分析
猜你喜欢
Gd32 F3 pin mapping problem SW interface cannot be burned
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
webgl_ Graphic transformation (rotation, translation, zoom)
[quick start for Digital IC Validation] 26. Ahb - sramc (6) for system verilog project practice (Basic Points of APB Protocol)
【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动...内含实践练习)
Ida Pro reverse tool finds the IP and port of the socket server
【兰州大学】考研初试复试资料分享
[target detection] yolov5 Runtong voc2007 data set
What is Base64?
[follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code
随机推荐
【OBS】RTMPSockBuf_ Fill, remote host closed connection.
Write a ten thousand word long article "CAS spin lock" to send Jay's new album to the top of the hot list
#HPDC智能基座人才发展峰会随笔
Shader Language
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
Spin animation of Cocos performance optimization
连接ftp服务器教程
[quick start of Digital IC Verification] 18. Basic grammar of SystemVerilog learning 5 (concurrent threads... Including practical exercises)
Yunxiaoduo software internal test distribution test platform description document
全日制研究生和非全日制研究生的区别!
How to understand that binary complement represents negative numbers
2022全开源企业发卡网修复短网址等BUG_2022企业级多商户发卡平台源码
[follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code
Stm32f103c8t6 PWM drive steering gear (sg90)
Database exception resolution caused by large table delete data deletion
知否|两大风控最重要指标与客群好坏的关系分析
How to deploy the super signature distribution platform system?
Oracle control file loss recovery archive mode method
[quick start of Digital IC Verification] 26. Ahb-sramc of SystemVerilog project practice (6) (basic points of APB protocol)
Async and await