Closed Roman-Lo closed 5 years ago
我发现C# SDK里面并没有RestoreObject的命令支持。Java SDK里面已经对该功能有所支持,并且能成功使用。 我也尝试过自己去参照其它指令去实现,发现返回了405 - Method Not Allowed的错误。下面是我的实现方式:
405 - Method Not Allowed
RestoreObjectCommand.cs
using System; using System.Collections.Generic; using Aliyun.OSS.Common.Communication; using Aliyun.OSS.Util; namespace Aliyun.OSS.Commands { internal class RestoreObjectCommand : OssCommand { public RestoreObjectRequest Request { get; private set; } protected override string Key { get { return Request.Key; } } protected override string Bucket { get { return Request.BucketName; } } protected override HttpMethod Method { get { return HttpMethod.Post; } } private RestoreObjectCommand(IServiceClient client, Uri endpoint, ExecutionContext context, RestoreObjectRequest request) : base(client, endpoint, context) { Request = request; } public static RestoreObjectCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context, RestoreObjectRequest request) { return new RestoreObjectCommand(client, endpoint, context, request); } protected override IDictionary<string, string> Parameters { get { var parameters = base.Parameters; parameters[RequestParameters.SUBRESOURCE_RESTORE] = null; return parameters; } } } }
IOss.cs
public interface IOss { // .... ignore multiple lines ... /// <summary> /// 解冻文件<see cref="RestoreObjectResult" />。 /// </summary> /// <param name="bucketName"><see cref="Bucket" />的名称。</param> /// <param name="key"><see cref="OssObject.Key" />。</param> /// <returns></returns> RestoreObjectResult RestoreObject(string bucketName, string key); // .... ignore multiple lines ... }
OssClient.cs
public class OssClient : IOss { // .... ignore multiple lines ... public RestoreObjectResult RestoreObject(string bucketName, string key) { var cmd = RestoreObjectCommand.Create(_serviceClient, _endpoint, CreateContext(HttpMethod.Post, bucketName, key), new RestoreObjectRequest(bucketName, key)); var response = cmd.Execute(); var result = new RestoreObjectResult((int)response.StatusCode); return result; } // .... ignore multiple lines ... }
希望官方尽快实现这个接口。
RestoreObject 接口已经提供。
我发现C# SDK里面并没有RestoreObject的命令支持。Java SDK里面已经对该功能有所支持,并且能成功使用。 我也尝试过自己去参照其它指令去实现,发现返回了
405 - Method Not Allowed
的错误。下面是我的实现方式:添加
RestoreObjectCommand.cs
在
IOss.cs
加入RestoreObject接口在
OssClient.cs
里加入RestoreObject接口的实现希望官方尽快实现这个接口。