.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);
}
}
也可以利用這兩個方法進行檔案的重新命名 阿里雲並沒有提供直接修改檔名的函式