1. 程式人生 > >.net OSS 拷貝檔案 和 刪除檔案 進行檔案的重新命名

.net OSS 拷貝檔案 和 刪除檔案 進行檔案的重新命名

/// <summary>
        /// 拷貝檔案重新命名  拷貝的檔案必須小於1G(當前在同一個儲存空間下)
        /// </summary>
        /// <param name="sourceBucket">原檔案所在儲存空間的名稱</param>
        /// <param name="sourceKey">原檔案的名稱</param>
        /// <param name="targetBucket">目標檔案所在儲存空間的名稱 可以與原檔案所在的儲存空間是同一個  也可以是另一個</param>
        /// <param name="targetKey">目標檔案的名稱</param>       
        private HttpResponseMessage CopyObect(string sourceKey,string targetKey)
        {

            try
            {
                //sourceKey = "test/test.txt";
                //targetKey = "test/2018.txt";
                var metadata = new ObjectMetadata();
                metadata.AddHeader(Aliyun.OSS.Util.HttpHeaders.ContentType, "text/html");
                var req = new CopyObjectRequest(m_bucketName, sourceKey, m_bucketName, targetKey)
                {
                    NewObjectMetadata = metadata
                };
                handleclient.CopyObject(req);
                DeleteObject(sourceKey);
                return ObjectToJson.toJson(new {status=200,rel=true,data= "Copy object succeeded" } );
            }
            catch (OssException ex)
            {
                return ObjectToJson.toJson(new {status=201,error=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)
            {
                return ObjectToJson.toJson(new { status = 201, error = string.Format("Copy object failed. {0}", ex.Message) });
            }
        }

 

 

/// <summary>
        /// 刪除指定儲存空間下的特定檔案
        /// </summary>
        /// <param name="bucketName">儲存空間的名稱</param>
        /// <param name="key">檔案的名稱</param>        
        private bool DeleteObject(string key)
        {
            try
            {
                var listResult = handleclient.ListObjects(m_bucketName);
                foreach (var summary in listResult.ObjectSummaries)
                {
                    if(key == summary.Key)
                        break; 
                }
                handleclient.DeleteObject(m_bucketName, key);
                Console.WriteLine("Delete object succeeded");
            }
            catch (OssException ex)
            {
                Console.WriteLine("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(ex.Message);
            }
        } 

也可以利用這兩個方法進行檔案的重新命名  阿里雲並沒有提供直接修改檔名的函式