UploadPartCopyRequest.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. * Copyright (C) Alibaba Cloud Computing
  3. * All rights reserved.
  4. *
  5. * 版权所有 (C)阿里云计算有限公司
  6. */
  7. using System;
  8. using System.Collections.Generic;
  9. namespace Aliyun.OSS
  10. {
  11. /// <summary>
  12. /// 指定以某一Object作为上传某分块数据源的请求。
  13. /// </summary>
  14. public class UploadPartCopyRequest
  15. {
  16. private readonly IList<string> _matchingETagConstraints = new List<string>();
  17. private readonly IList<string> _nonmatchingETagConstraints = new List<string>();
  18. /// <summary>
  19. /// 获取或者设置<see cref="OssObject" />所在<see cref="Bucket" />的名称。
  20. /// </summary>
  21. public string TargetBucket { get; private set; }
  22. /// <summary>
  23. /// 获取或者设置<see cref="OssObject" />的值。
  24. /// </summary>
  25. public string TargetKey { get; private set; }
  26. /// <summary>
  27. /// 获取或设置上传Multipart上传事件的Upload ID。
  28. /// </summary>
  29. public string UploadId { get; private set; }
  30. /// <summary>
  31. /// 获取或设置返回上传分块(Part)的标识号码(Part Number)。
  32. /// 每一个上传分块(Part)都有一个标识它的号码(范围1~10000)。
  33. /// 对于同一个Upload ID,该号码不但唯一标识这一块数据,也标识了这块数据在整个文件中的
  34. /// 相对位置。如果你用同一个Part号码上传了新的数据,那么OSS上已有的这个号码的Part数据将被覆盖。
  35. /// </summary>
  36. public int? PartNumber { get; set; }
  37. /// <summary>
  38. /// 获取或设置返回分块(Part)数据的字节数。
  39. /// 除最后一个Part外,其他Part最小为5MB。
  40. /// </summary>
  41. public long? PartSize { get; set; }
  42. /// <summary>
  43. /// 获取或设置分块(Part)数据的MD5校验值。
  44. /// </summary>
  45. public string Md5Digest { get; set; }
  46. /// <summary>
  47. /// 获取或设置拷贝源Object。
  48. /// </summary>
  49. public string SourceKey { get; set; }
  50. /// <summary>
  51. /// 获取或设置拷贝源Bucket。
  52. /// </summary>
  53. public string SourceBucket { get; set; }
  54. /// <summary>
  55. /// 获取或设置拷贝源Object的起始位置。
  56. /// </summary>
  57. public long? BeginIndex { get; set; }
  58. /// <summary>
  59. /// 如果源Object的ETAG值和用户提供的ETAG相等,则执行拷贝操作;
  60. /// 否则返回412 HTTP错误码(预处理失败)。
  61. /// </summary>
  62. public IList<string> MatchingETagConstraints
  63. {
  64. get { return _matchingETagConstraints; }
  65. }
  66. /// <summary>
  67. /// 如果源Object的ETAG值和用户提供的ETAG不相等,则执行拷贝操作;
  68. /// 否则返回412 HTTP错误码(预处理失败)。
  69. /// </summary>
  70. public IList<string> NonmatchingETagConstraints
  71. {
  72. get { return _nonmatchingETagConstraints; }
  73. }
  74. /// <summary>
  75. /// 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回200 OK;
  76. /// 否则返回412 precondition failed错误
  77. /// </summary>
  78. public DateTime? UnmodifiedSinceConstraint { get; set; }
  79. /// <summary>
  80. /// 如果源Object自从用户指定的时间以后被修改过,则执行拷贝操作;
  81. /// 否则返回412 HTTP错误码(预处理失败)。
  82. /// </summary>
  83. public DateTime? ModifiedSinceConstraint { get; set; }
  84. public UploadPartCopyRequest(string targetBucket, string targetKey, string sourceBucket,
  85. string sourceKey, string uploadId)
  86. {
  87. TargetBucket = targetBucket;
  88. TargetKey = targetKey;
  89. SourceBucket = sourceBucket;
  90. SourceKey = sourceKey;
  91. UploadId = uploadId;
  92. }
  93. }
  94. }