当前位置:网站首页>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;
            }
        }
    }
}

原网站

版权声明
本文为[sky954260193]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130611107060.html