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