InitiateMultipartUploadCommand.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * Copyright (C) Alibaba Cloud Computing
  3. * All rights reserved.
  4. *
  5. * 版权所有 (C)阿里云计算有限公司
  6. */
  7. using System;
  8. using System.IO;
  9. using System.Collections.Generic;
  10. using Aliyun.OSS.Common.Communication;
  11. using Aliyun.OSS.Util;
  12. using Aliyun.OSS.Transform;
  13. namespace Aliyun.OSS.Commands
  14. {
  15. #pragma warning disable 618, 3005
  16. internal class InitiateMultipartUploadCommand : OssCommand<InitiateMultipartUploadResult>
  17. {
  18. private readonly InitiateMultipartUploadRequest _initiateMultipartUploadRequest;
  19. protected override string Bucket
  20. {
  21. get { return _initiateMultipartUploadRequest.BucketName; }
  22. }
  23. protected override string Key
  24. {
  25. get { return _initiateMultipartUploadRequest.Key; }
  26. }
  27. protected override HttpMethod Method
  28. {
  29. get { return HttpMethod.Post; }
  30. }
  31. protected override IDictionary<string, string> Parameters
  32. {
  33. get
  34. {
  35. return new Dictionary<string, string>()
  36. {
  37. { RequestParameters.SUBRESOURCE_UPLOADS, null },
  38. { RequestParameters.ENCODING_TYPE, _initiateMultipartUploadRequest.EncodingType }
  39. };
  40. }
  41. }
  42. protected override Stream Content
  43. {
  44. get { return new MemoryStream(new byte[0]); }
  45. }
  46. protected override IDictionary<string, string> Headers
  47. {
  48. get
  49. {
  50. var headers = new Dictionary<string, string>();
  51. if (_initiateMultipartUploadRequest.ObjectMetadata != null)
  52. _initiateMultipartUploadRequest.ObjectMetadata.Populate(headers);
  53. return headers;
  54. }
  55. }
  56. private InitiateMultipartUploadCommand(IServiceClient client, Uri endpoint, ExecutionContext context,
  57. IDeserializer<ServiceResponse, InitiateMultipartUploadResult> deserializeMethod,
  58. InitiateMultipartUploadRequest initiateMultipartUploadRequest)
  59. : base(client, endpoint, context, deserializeMethod)
  60. {
  61. _initiateMultipartUploadRequest = initiateMultipartUploadRequest;
  62. }
  63. public static InitiateMultipartUploadCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context,
  64. InitiateMultipartUploadRequest initiateMultipartUploadRequest)
  65. {
  66. OssUtils.CheckBucketName(initiateMultipartUploadRequest.BucketName);
  67. OssUtils.CheckObjectKey(initiateMultipartUploadRequest.Key);
  68. return new InitiateMultipartUploadCommand(client, endpoint, context,
  69. DeserializerFactory.GetFactory().CreateInitiateMultipartUploadResultDeserializer(),
  70. initiateMultipartUploadRequest);
  71. }
  72. }
  73. #pragma warning restore 618, 3005
  74. }