QingCloud 文档 – Multipart 分段 - kaiyun官方网站下载手机网页 /storage/object-storage/api/object/multipart/ Recent content in Multipart 分段 on QingCloud 文档 Hugo -- gohugo.io Storage: Abort Multipart Upload /storage/object-storage/api/object/multipart/abort/ Wed, 25 Nov 2020 10:08:56 +0900 /storage/object-storage/api/object/multipart/abort/ <p>该 API 接口用于终止一个分段上传,并删除已经上传的分段。该操作要求请求者对指定的 Bucket 拥有可读权限。</p> <h2 id="使用须知">使用须知</h2> <ul> <li>若指定的 Bucket 被设置为匿名用户可写,则请求中可不携带用户认证信息;</li> <li>若指定的 Bucket 被设置为匿名用户可写,但请求中仍然携带了用户认证信息,则 QingStor 对象存储仍然会对该用户进行认证,当 QingStor 对象存储认证该用户不拥有该 Bucket 的可写权限,该请求返回错误。</li> </ul> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">DELETE</span> /&lt;object-name&gt;?upload_id=&lt;upload-id&gt; <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>调用该接口时,用户可在 URL 中添加以下参数用以设置响应头中的响应字段。</p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>upload_id</td> <td>String</td> <td>初始化分段上传时,响应消息体里返回的 <code>upload_id</code></td> <td>是</td> </tr> </tbody> </table> <h2 id="请求消息头">请求消息头</h2> <p>此接口仅包含 Host、Date 等公共请求头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h2 id="请求消息体">请求消息体</h2> <p>无。</p> <h2 id="响应头">响应头</h2> <p>此接口仅包含公共响应头。关于公共响应头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="错误码">错误码</h2> <p>该 API 为幂等操作。成功调用,则返回 204,无论分段上传存在或不存在;Bucket 不存在返回404。其他失败的返回码参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">DELETE</span> /large-object?upload_id=4d26b37a469230619604ecdc0e314782 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">204</span> <span style="color:#a6e22e">NoContent</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">37fed66c441a11e5b95f52542e6ce14b</span> </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: Complete Multipart Upload /storage/object-storage/api/object/multipart/complete/ Wed, 25 Nov 2020 10:08:56 +0900 /storage/object-storage/api/object/multipart/complete/ <p>该 API 接口用于结束一个分段上传,从而获得一个完整的 Object。当一个分段上传完成后,用户未调用该接口,则该分段上传仍然处于未完成的状态,此时调用 GET 请求获得该 Object 会返回错误。</p> <h2 id="使用须知">使用须知</h2> <ul> <li>该操作要求请求者对指定的 Bucket 拥有可读权限。</li> <li>若指定的 Bucket 被设置为匿名用户可写,则请求中可不携带用户认证信息;</li> <li>若指定的 Bucket 被设置为匿名用户可写,但请求中仍然携带了用户认证信息,则 QingStor 对象存储仍然会对该用户进行认证,当 QingStor 对象存储认证该用户不拥有该 Bucket 的可写权限,该请求返回错误。</li> </ul> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">POST</span> /&lt;object-name&gt;?upload_id=&lt;upload-id&gt; <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>调用该接口时,用户可在 URL 中添加以下参数用以设置响应头中的响应字段。</p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>upload_id</td> <td>String</td> <td>初始化分段上传时,响应消息体里返回的 <code>upload_id</code></td> <td>是</td> </tr> </tbody> </table> <h2 id="请求消息头">请求消息头</h2> <h3 id="标准-http-头">标准 HTTP 头</h3> <p>读取分段上传合并后的 Object 全部内容所需时间较长,为了避免阻塞,QingStor 对象存储服务不会自动为合并后的文件计算 ETag 值,需要用户自行在调用此接口时设置。此处设置的 ETag 值会在用户调用 HEAD Object 接口时,通过响应头返回。</p> <table> <thead> <tr> <th>字段名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>ETag</td> <td>String</td> <td>该值请使用 <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19">HTTP 规范</a> 所规定的格式。</td> <td>否</td> </tr> </tbody> </table> <p>此接口还需要包含 Host、Date 等公共请求头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h3 id="加密对象">加密对象</h3> <p>若用户操作的 Object 为加密对象,则需提供相应的加密请求头。具体可参考 <a href="/storage/object-storage/api/object/encryption">加密对象</a> 相关内容,添加相应请求头。</p> <h2 id="请求消息体">请求消息体</h2> <p>调用该 API 需携带如 <a href="#%E8%AF%B7%E6%B1%82%E7%A4%BA%E4%BE%8B">请求示例</a> 中的 Json 消息体。该消息体各字段说明如下:</p> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>object_parts</td> <td>List</td> <td>消息体顶层,需要按照 <code>part_number</code> 递增排序</td> </tr> <tr> <td>part_number</td> <td>Integer</td> <td>分段序号,大于等于 0,小于等于 10000</td> </tr> <tr> <td>etag</td> <td>String</td> <td>该分段内容的校验码,可选</td> </tr> </tbody> </table> <p><strong>备注:</strong></p> <ul> <li><code>part_number</code> 不一定需要连续,但需要递增。</li> <li>允许用户在最终合并分段时,排除掉某些已上传分段。</li> </ul> <h2 id="响应头">响应头</h2> <p>若对象被加密,服务端将返回 <a href="/storage/object-storage/api/object/encryption/#%E5%8A%A0%E5%AF%86%E5%93%8D%E5%BA%94%E5%A4%B4">加密响应头</a>。</p> <p>其他公共响应头可参考:<a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="错误码">错误码</h2> <p>成功则返回 201,其他错误码可参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">POST</span> /large-object?upload_id=4d26b37a469230619604ecdc0e314782 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span><span style="display:flex;"><span>ETag<span style="color:#f92672">:</span> <span style="color:#ae81ff">&#34;0c2f573d81194064b129e940edcefe9b&#34;</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> &#34;object_parts&#34;: [ </span></span><span style="display:flex;"><span> {&#34;part_number&#34;: 0, &#34;etag&#34;: &#34;c837682353601f7fc0a2ccb6bc8f4654&#34;}, </span></span><span style="display:flex;"><span> {&#34;part_number&#34;: 2, &#34;etag&#34;: &#34;28e2c0c6574a1ef20ac41d16a012a7c1&#34;} </span></span><span style="display:flex;"><span> ] </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">201</span> <span style="color:#a6e22e">CREATED</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">37fed66c441a11e5b95f52542e6ce14b</span> </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: Copy Object Part /storage/object-storage/api/object/multipart/copy/ Wed, 25 Nov 2020 10:08:56 +0900 /storage/object-storage/api/object/multipart/copy/ <p>该 API 接口用于从源 Bucket 分段复制一个 Object 至目标 Object,请求参数需要携带初始化分段上传阶段得到的 Upload ID。</p> <h2 id="使用须知">使用须知</h2> <ul> <li>该操作要求请求者对指定的 Bucket 拥有可写权限。</li> <li>关于分段大小的规定,请参看 <a href="../#%E5%88%86%E6%AE%B5%E4%B8%8A%E4%BC%A0%E9%99%90%E5%88%B6">分段上传限制</a></li> <li>若源 Object 的大小大于 5G,用户可以通过设置请求头中的 <code>x-qs-copy-range</code> 参数分多次复制。</li> <li>目前仅支持在同一区域 (Zone) 内复制。</li> </ul> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">PUT</span> /&lt;object-name&gt;?upload_id=&lt;upload-id&gt;&amp;part_number=&lt;part-number&gt; <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>x-qs-copy-source<span style="color:#f92672">:</span> <span style="color:#ae81ff">/source-bucket/source-object</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>调用该接口时,用户可在 URL 中添加以下参数用以设置响应头中的响应字段。</p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>upload_id</td> <td>String</td> <td>初始化分段上传时,响应消息体里返回的 <code>upload_id</code></td> <td>是</td> </tr> <tr> <td>part_number</td> <td>Integer</td> <td>分段序号,合并时需按照序号从小到大顺序合并,数值必须大于等于 0,且小于等于 10000</td> <td>是</td> </tr> </tbody> </table> <h2 id="请求消息头">请求消息头</h2> <h3 id="自定义-http-头">自定义 HTTP 头</h3> <p>该 API 接口支持如下消息头:</p> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>x-qs-copy-source</td> <td>String</td> <td>指定源 Object Key,格式为:<code>/source-bucket/source-object</code>, 需进行URL编码。</td> <td>是</td> </tr> <tr> <td>x-qs-copy-range</td> <td>String</td> <td>复制源 Object 的某个字节区间,取值可参考 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a> 中的 Range 头字段</td> <td>否</td> </tr> <tr> <td>x-qs-copy-source-if-modified-since</td> <td>Date</td> <td>若指定的时间早于源 Object 被修改的时间,则正常复制该 Object</td> <td>否</td> </tr> <tr> <td>x-qs-copy-source-If-Unmodified-Since</td> <td>Date</td> <td>若指定的时间晚于源 Object 被修改的时间,则正常复制该 Object</td> <td>否</td> </tr> <tr> <td>x-qs-copy-source-If-Match</td> <td>String</td> <td>若源 Object 的 ETag 值符合该给定的值,则正常复制该 Object</td> <td>否</td> </tr> <tr> <td>x-qs-copy-source-If-None-Match</td> <td>String</td> <td>若源 Object 的 ETag 值不符合该给定的值,则正常复制对象</td> <td>否</td> </tr> </tbody> </table> <h3 id="标准-http-头">标准 HTTP 头</h3> <p>此接口还需包含 Host、Date 等公共请求头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h3 id="加密对象">加密对象</h3> <p>若源对象是加密的,则需提供相应的加密请求头。具体可参考 <a href="/storage/object-storage/api/object/encryption/#%E5%A6%82%E4%BD%95copy%E5%8A%A0%E5%AF%86%E8%BF%87%E7%9A%84%E5%AF%B9%E8%B1%A1">如何 Copy 加密过的对象</a>。</p> <p>若用户需对目标 Object 进行加密,则需提供相应的加密请求头。具体可参考 <a href="/storage/object-storage/api/object/encryption/#%E5%8A%A0%E5%AF%86%E8%AF%B7%E6%B1%82%E5%A4%B4">加密对象</a> 相关内容,添加相应请求头。</p> <h2 id="请求消息体">请求消息体</h2> <p>无。</p> <h2 id="响应头">响应头</h2> <p>若对象被加密,服务端将返回 <a href="/storage/object-storage/api/object/encryption/#%E5%8A%A0%E5%AF%86%E5%93%8D%E5%BA%94%E5%A4%B4">加密响应头</a>。</p> <p>其他公共响应头可参考:<a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="错误码">错误码</h2> <p>成功则返回 201,失败的返回码参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">PUT</span> /large-object?upload_id=4d26b37a469230619604ecdc0e314782&amp;part_number=0 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span><span style="display:flex;"><span>x-qs-copy-source<span style="color:#f92672">:</span> <span style="color:#ae81ff">/source-bucket/source-object</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">201</span> <span style="color:#a6e22e">CREATED</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">37fed66c441a11e5b95f52542e6ce14b</span> </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: Initiate Multipart Upload /storage/object-storage/api/object/multipart/initiate/ Wed, 25 Nov 2020 10:08:56 +0900 /storage/object-storage/api/object/multipart/initiate/ <p>该 API 接口用于初始化一个分段上传。针对该请求,QingStor 对象存储会返回一个 Upload Id,用于后续上传分段时,标记该分段所属 Object。</p> <h2 id="使用须知">使用须知</h2> <ul> <li>该操作要求请求者对指定的 Bucket 拥有可写权限。</li> <li>若指定的 Bucket 被设置为匿名用户可写,则请求中可不携带用户认证信息;</li> <li>若指定的 Bucket 被设置为匿名用户可写,但请求中仍然携带了用户认证信息,则 QingStor 对象存储仍然会对该用户进行认证,当 QingStor 对象存储认证该用户不拥有该 Bucket 的可写权限,该请求返回错误。</li> </ul> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">POST</span> /&lt;object-name&gt;?uploads <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>无。</p> <h2 id="请求消息头">请求消息头</h2> <h3 id="标准-http-头">标准 HTTP 头</h3> <table> <thead> <tr> <th>字段名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>Content-Type</td> <td>String</td> <td>对象的类型</td> <td>否</td> </tr> <tr> <td>x-qs-storage-class</td> <td>String</td> <td>指定该对象的存储级别。默认值为 <code>STANDARD</code>。可选值为:<br> - <code>STANDARD</code> 表示标准存储;<br> - <code>STANDARD_IA</code> 表示低频存储。</td> <td>否</td> </tr> </tbody> </table> <p>此接口还需要包含 Host、Date 等公共请求头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h3 id="加密对象">加密对象</h3> <p>若用户需加密对象,则需提供相应的加密请求头。具体可参考 <a href="/storage/object-storage/api/object/encryption">加密对象</a> 相关内容,添加相应请求头。</p> <h3 id="元数据">元数据</h3> <p>若用户需给 Object 添加元数据,可参考 <a href="/storage/object-storage/api/metadata/#%E5%8F%AF%E4%BF%AE%E6%94%B9%E7%9A%84%E5%85%83%E6%95%B0%E6%8D%AE">对象元数据</a> 相关内容,进行添加创建对象元数据。</p> <h2 id="请求消息体">请求消息体</h2> <p>无。</p> <h2 id="响应头">响应头</h2> <p>若对象被加密,服务端将返回 <a href="/storage/object-storage/api/object/encryption/#%E5%8A%A0%E5%AF%86%E5%93%8D%E5%BA%94%E5%A4%B4">加密响应头</a>。</p> <p>其他公共响应头可参考:<a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="响应消息体">响应消息体</h2> <p>成功调用该 API 接口后,服务端会返回如 <a href="#%E5%93%8D%E5%BA%94%E7%A4%BA%E4%BE%8B">响应示例</a> 中的 Json 消息体。该消息体各字段说明如下:</p> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>bucket</td> <td>String</td> <td>存储空间名称</td> </tr> <tr> <td>key</td> <td>String</td> <td>对象名称</td> </tr> <tr> <td>upload_id</td> <td>String</td> <td>分段上传 ID。用于唯一标识该分段上传过程,作为后续上传分段的参数。</td> </tr> </tbody> </table> <h2 id="错误码">错误码</h2> <table> <thead> <tr> <th>错误码</th> <th>错误描述</th> <th>HTTP 状态码</th> </tr> </thead> <tbody> <tr> <td>OK</td> <td>成功</td> <td>200</td> </tr> </tbody> </table> <p>其他错误码可参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">POST</span> /large-object?uploads <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">200</span> <span style="color:#a6e22e">OK</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Type<span style="color:#f92672">:</span> <span style="color:#ae81ff">application/json</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">90</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">37fed66c441a11e5b95f52542e6ce14b</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;upload_id&#34;</span>: <span style="color:#e6db74">&#34;4d26b37a469230619604ecdc0e314782&#34;</span>, </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;bucket&#34;</span>: <span style="color:#e6db74">&#34;mybucket&#34;</span>, </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;key&#34;</span>: <span style="color:#e6db74">&#34;large-object&#34;</span> </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: List Multipart Parts /storage/object-storage/api/object/multipart/list/ Wed, 25 Nov 2020 10:08:56 +0900 /storage/object-storage/api/object/multipart/list/ <p>该 API 接口用于列出已经上传的分段信息。该请求需要对 Bucket 有可读权限。</p> <h2 id="使用须知">使用须知</h2> <ul> <li>该操作要求请求者对指定的 Bucket 拥有可读权限。</li> <li>若指定的 Bucket 被设置为匿名用户可写,则请求中可不携带用户认证信息;</li> <li>若指定的 Bucket 被设置为匿名用户可写,但请求中仍然携带了用户认证信息,则 QingStor 对象存储仍然会对该用户进行认证,当 QingStor 对象存储认证该用户不拥有该 Bucket 的可读权限,该请求返回错误。</li> </ul> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">GET</span> /&lt;object-name&gt;?upload_id=&lt;upload-id&gt; <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>调用该接口时,用户可在 URL 中添加以下参数用以设置响应头中的响应字段。</p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>upload_id</td> <td>String</td> <td>初始化分段上传时,响应消息体里返回的 <code>upload_id</code></td> <td>是</td> </tr> <tr> <td>part_number_marker</td> <td>Integer</td> <td>设定结果从 <code>part_number_marker</code> 之后按分段序号排序的第一个开始返回</td> <td>否</td> </tr> <tr> <td>limit</td> <td>Integer</td> <td>限定此次返回分段的最大数量,该数值不能大于 1000</td> <td>否</td> </tr> </tbody> </table> <h2 id="请求消息头">请求消息头</h2> <p>此接口仅包含 Host、Date 等公共请求头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h2 id="请求消息体">请求消息体</h2> <p>无。</p> <h2 id="响应头">响应头</h2> <p>此接口仅包含公共响应头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="响应消息体">响应消息体</h2> <p>成功调用该 API 接口后,服务端会返回如 <a href="#%E5%93%8D%E5%BA%94%E7%A4%BA%E4%BE%8B">响应示例</a> 中的 Json 消息体。该消息体各字段说明如下:</p> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>object_parts</td> <td>List</td> <td>消息体顶层</td> </tr> <tr> <td>part_number</td> <td>Integer</td> <td>分段序号</td> </tr> <tr> <td>created</td> <td>Date</td> <td>分段创建时间</td> </tr> <tr> <td>size</td> <td>Integer</td> <td>分段大小</td> </tr> <tr> <td>etag</td> <td>String</td> <td>服务器端为分段内容生成的唯一标志</td> </tr> <tr> <td>count</td> <td>Integer</td> <td>分段数量</td> </tr> </tbody> </table> <h2 id="错误码">错误码</h2> <p>成功则返回 200;若 <code>upload_id</code> 不存在则返回 404; 其他失败的返回码参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">GET</span> /large-object?upload_id=4d26b37a469230619604ecdc0e314782 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">200</span> <span style="color:#a6e22e">OK</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">243</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">37fed66c441a11e5b95f52542e6ce14b</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> &#34;count&#34;: 3, </span></span><span style="display:flex;"><span> &#34;object_parts&#34;: [ </span></span><span style="display:flex;"><span> {&#34;part_number&#34;: 1, &#34;size&#34;: 10485760, &#34;created&#34;: &#34;2015-08-16T14:52:12.000Z&#34;, &#34;etag&#34;: &#34;64ec234786ffc5c20306ec441b65a521&#34;}, </span></span><span style="display:flex;"><span> {&#34;part_number&#34;: 2, &#34;size&#34;: 10485760, &#34;created&#34;: &#34;2015-08-16T14:52:16.000Z&#34;, &#34;etag&#34;: &#34;3efbe3ebbcf4e07111591576fc0d3829&#34;}, </span></span><span style="display:flex;"><span> {&#34;part_number&#34;: 3, &#34;size&#34;: 61440, &#34;created&#34;: &#34;2015-08-16T14:52:16.000Z&#34;, &#34;etag&#34;: &#34;1522531043073c5fedb61a8bb06451c7&#34;} </span></span><span style="display:flex;"><span> ] </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: Upload Object Part /storage/object-storage/api/object/multipart/upload/ Wed, 25 Nov 2020 10:08:56 +0900 /storage/object-storage/api/object/multipart/upload/ <p>该 API 接口用于上传一个分段,请求参数需要携带初始化分段上传阶段得到的 Upload ID。</p> <h2 id="使用须知">使用须知</h2> <ul> <li>该操作要求请求者对指定的 Bucket 拥有可写权限。</li> <li>关于分段大小的规定,请参看 <a href="../#%E5%88%86%E6%AE%B5%E4%B8%8A%E4%BC%A0%E9%99%90%E5%88%B6">分段上传限制</a>。</li> <li>若指定的 Bucket 被设置为匿名用户可写,则请求中可不携带用户认证信息;</li> <li>若指定的 Bucket 被设置为匿名用户可写,但请求中仍然携带了用户认证信息,则 QingStor 对象存储仍然会对该用户进行认证,当 QingStor 对象存储认证该用户不拥有该 Bucket 的可写权限,该请求返回错误。</li> </ul> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">PUT</span> /&lt;object-name&gt;?upload_id=&lt;upload-id&gt;&amp;part_number=&lt;part-number&gt; <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>调用该接口时,用户可在 URL 中添加以下参数用以设置响应头中的响应字段。</p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>upload_id</td> <td>String</td> <td>初始化分段上传时,响应消息体里返回的 <code>upload_id</code></td> <td>是</td> </tr> <tr> <td>part_number</td> <td>Integer</td> <td>分段序号,合并时需按照序号从小到大顺序合并,数值必须大于等于 0,且小于等于 10000</td> <td>是</td> </tr> </tbody> </table> <h2 id="请求消息头">请求消息头</h2> <h3 id="标准-http-头">标准 HTTP 头</h3> <table> <thead> <tr> <th>字段名</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>Content-Length</td> <td>String</td> <td>对象实体的大小</td> <td>是</td> </tr> <tr> <td>Content-MD5</td> <td>String</td> <td>分段实体的预期 MD5 值,用于检查 Object 在传输过程中字符是否出错或被篡改</td> <td>否</td> </tr> <tr> <td>Expect</td> <td>String</td> <td>若请求头附加这个参数,则该请求中无需附带请求消息体,QingStor 对象存储服务端可接受此请求,并返回状态码: 100</td> <td>否</td> </tr> </tbody> </table> <p>此接口还需要包含 Host、Date 等公共请求头。详细内容可参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h3 id="加密对象">加密对象</h3> <p>若用户需加密对象,则需提供相应的加密请求头。具体可参考 <a href="/storage/object-storage/api/object/encryption">加密对象</a> 相关内容,添加相应请求头。</p> <h2 id="请求消息体">请求消息体</h2> <p>分段内容实体。</p> <h2 id="响应头">响应头</h2> <p>若对象被加密,服务端将返回 <a href="/storage/object-storage/api/object/encryption/#%E5%8A%A0%E5%AF%86%E5%93%8D%E5%BA%94%E5%A4%B4">加密响应头</a>。</p> <p>其他公共响应头可参考:<a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="错误码">错误码</h2> <table> <thead> <tr> <th>错误码</th> <th>错误描述</th> <th>HTTP 状态码</th> </tr> </thead> <tbody> <tr> <td>OK</td> <td>成功</td> <td>201</td> </tr> <tr> <td>-</td> <td><code>upload_id</code> 不存在</td> <td>404</td> </tr> </tbody> </table> <p>其他错误码可参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">PUT</span> /large-object?upload_id=4d26b37a469230619604ecdc0e314782&amp;part_number=0 <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">7987</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">[7987</span> <span style="color:#ae81ff">bytes of object data]</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">201</span> <span style="color:#a6e22e">CREATED</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 13:25:10 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">37fed66c441a11e5b95f52542e6ce14b</span> </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p>