基于 AWS 架构的 API,您可以使用任何编程语言发送 HTTP/HTTPS 请求。所有请求参数均通过 HTTP/HTTPS 请求头以 Key: Value 的形式传递。 特别的,FSS仅支持文件相关的API,不支持区域相关配置。 access key id是桶名,secret access key是桶密码。
<bucket>/<path><bucket>.fss-my.vhostgo.com/<path>bucket、path
<> 是参数内容,是需要用户填写的,填写时,把 <> 去掉。
bucket,是创建的桶名;path,文件/文件夹的路径。
注
文件上传和客户端管理使用路径风格,网页访问get/head使用虚拟机风格。
兼容公共请求头
| 参数 | 说明 | 
|---|---|
| Authorization | 兼容 | 
| Content-Length | 兼容 | 
| Content-MD5 | 兼容 | 
| Content-Type | 兼容 | 
| Date | 兼容 | 
| Host | 兼容 | 
| x-amz-content-sha256 | 兼容 | 
| x-amz-date | 兼容 | 
| x-amz-security-token | 不兼容 | 
兼容公共响应头
| 参数 | 说明 | 
|---|---|
| Content-Length | 兼容 | 
| Content-Type | 兼容 | 
| ETag | 兼容 | 
| Date | 兼容 | 
| x-amz-delete-marker | 不支持 | 
| x-amz-request-id | 兼容 | 
| x-amz-id-2 | 不支持 | 
| x-amz-version-id | 不支持 | 
PUT /<bucket>/<path_to_file>
上传参数
除了所有操作通用的请求头之外,操作的此实现还可以使用以下请求头
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| Content-Length | 是 | string | 请求内容长度 | 
| Content-MD5 | 否 | string | 上传文件的 MD5 值,如果请求中文件太大计算 MD5 不方便,可以为空 | 
| Content-Type | 否 | string | 文件类型,默认使用文件扩展名作为文件类型 | 
| x-amz-meta-x | 否 | string | 文件元数据,见 Metadata | 
注
响应信息
200举例
xxxxxxxxxx61PUT /bucket-7/1.txt HTTP/1.12Host: fss-my.vhostgo.com3Date: Mon, 11 Jul 2023 03:20:29 GMT4Authorization: authorization string 5Content-Type: text/plain 6Content-Length: 1314分片限制
| 限制项 | 规格 | 
|---|---|
| 单个Part大小 | 1M,除去最后一个分片外,其它均为1M大小的块 | 
初始化分块上传任务,并得到全局唯一任务 UploadId,后续分块任务相关接口都需要 UploadId 作为请求参数。
请求信息
xxxxxxxxxx51POST /bucket-7/1.txt?uploads HTTP/1.1 2Host: fss-my.vhostgo.com3Date: date 4Authorization: authorization string5x-west-multi-length:1134000参数
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| x-west-multi-length | 是 | string | 上传文件的大小 | 
| Content-MD5 | 否 | string | 上传文件的 MD5 值,如果请求中文件太大计算 MD5 不方便,可以为空。使用时请勿在使用请求体上传文件 | 
| Content-Type | 否 | string | 文件类型,默认使用文件扩展名作为文件类型 | 
| x-amz-meta-x | 否 | string | 文件元数据 | 
响应信息
该请求操作的实现仅使用了所有操作的公共响应头。有关详细信息,请查阅公共响应头
响应内容
| 参数 | 类型 | 说明 | 
|---|---|---|
| InitiateMultipartUploadResult | Container | 上传文件的大小 | 
| Bucket | string | 空间名称 | 
| Key | string | 资源名称 | 
| UploadId | string | 初始化任务生成的ID。 上传分片 UploadPart API调用时用作请求参数 | 
200举例
xxxxxxxxxx141POST /bucket-7/west.txt?uploads HTTP/1.1 2Host: fss-my.vhostgo.com3X-Amz-Date: 20240301T022904Z4Content-Type: text/plain5Authorization: authorization string 678HTTP/1.1 200 OK 9<?xml version="1.0" encoding="UTF-8"?>10<InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">11    <Bucket>bucket-7</Bucket>12    <Key>west.txt</Key>13    <UploadId>e3868700-018b-41a3-8a9a-e093b7a22fc4</UploadId>14</InitiateMultipartUploadResult>分块上传数据,需指定的任务 UploadId
请求信息
xxxxxxxxxx51PUT /bucket-7/west.txt?partNumber=PartNumber&uploadId=UploadId HTTP/1.1 2Host: fss-my.vhostgo.com3Date: date 4Content-Length: Size5Authorization: authorization string参数
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| ObjectName | 是 | string | 初始化分片任务的对象 | 
| PartNumber | 是 | string | 上传的分块编号。介于1和10,000之间的正整数 | 
| UploadId | 是 | string | 上传任务ID。可从初始化任务接口响应信息中获取 | 
响应信息
200举例
xxxxxxxxxx151PUT /bucket-7/west.txt?partNumber=1&uploadId=ZpbmcncyBteS1tb HTTP/1.1 2Host: fss-my.vhostgo.com3Date: Wed, 12 Oct 2023 17:50:00 GMT 4Content-Length: 10485760 5Content-MD5: pUNXr/BjKK5G2UKvaRRrOA== 6Authorization: authorization string 78data content910HTTP/1.1 200 OK 11x-amz-request-id: 3141cdab-1387-4872-b6e7-e83ec0f9fc97 12Date: Wed, 12 Oct 2023 17:51:00 GMT 13ETag: "b54357faf0632cce46e942fa68356b38" 14Content-Length: 015Connection: keep-alive 请求信息
xxxxxxxxxx131POST /bucket-7/west.txt?uploadId=UploadId HTTP/1.12Host: fss-my.vhostgo.com3Date: date 4Content-Length: Size 5Authorization: authorization string67<CompleteMultipartUpload>8 <Part>9   <PartNumber>PartNumber</PartNumber>10   <ETag>ETag</ETag>11 </Part>12 ...13</CompleteMultipartUpload>参数
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| ObjectName | 是 | string | 资源名称 | 
| UploadId | 是 | string | 上传任务ID。可从初始化任务接口响应信息中获取 | 
响应信息
200 状态码举例
xxxxxxxxxx351POST /bucket-7/west.txt?uploadId=ZpbmcncyBteS1tb HTTP/1.1 2Host: fss-my.vhostgo.com3Date: Wed, 12 Oct 2023 17:50:00 GMT 4Content-Length: 10485760 5Authorization: authorization string 678<CompleteMultipartUpload>9  <Part>10    <PartNumber>1</PartNumber>11    <ETag>"a54357aff0632cce46d942af68356b38"</ETag>12  </Part>13  <Part>14    <PartNumber>2</PartNumber>15    <ETag>"0c78aef83f66abc1fale8477f296d394"</ETag>16  </Part>17  <Part>18    <PartNumber>3</PartNumber>19    <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>20  </Part>21</CompleteMultipartUpload>222324HTTP/1.1 200 OK 25x-amz-request-id: 3141cdab-1387-4872-b6e7-e83ec0f9fc97 26Date: Wed, 12 Oct 2023 17:50:00 GMT 27Connection: close 2829<?xml version="1.” encoding="UTF-8"?>30<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">31  <Location>http://fss-my.vhostgo.com/bucket-7/west.txt</Location>32  <Bucket>bucket-7</Bucket>33  <Key>west.txt</Key>34  <ETag>"3858f62230ac3c915f300c664312c11f-9"</ETag>35</CompleteMultipartUploadResult>  同 bucket 下复制文件。它只能操作文件,不能操作文件夹。
请求信息
PUT /<bucket>/<save_as_file>  
参数
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| x-amz-copy-source | 是 | string | 源文件地址,格式 /<bucket>/<source-to-file> | 
响应信息
200 状态码。举例
xxxxxxxxxx151PUT /bucket-7/west.txt HTTP/1.12Host: fss-my.vhostgo.com3Date: Wed, 12 Oct 2023 17:50:00 GMT4x-amz-copy-source: /bucket-7/test/west.copy5Authorization: authorization string67HTTP/1.1 200 OK8x-amz-request-id: 3141cdab-1337-4872-b6e7-e83ec0f9fc979Date: Wed, 28 Oct 2009 22:32:00 GMT10Connection: close1112<CopyObjectResult>13   <LastModified>2023-10-12T17:50:30.000Z</LastModified>14   <ETag>"9b2cf535f27731c974343645a3985328"</ETag>15</CopyObjectResult>用于获取一个资源的元数据及对象数据,可以获取全部数据或者使用 Range 指定获取部分数据
请求信息
GET /<bucket>/<path_to_file>  
参数
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| Range | 否 | string | Range: byte=0-499表示第0-499字节范围的内容。Range: byte=-500表示最后500字节的内容。Range: byte=500-表示从第500字节开始到文件结束部分的内容。Range: byte=0-表示从第一个字节到最后一个字节,即完整的文件内容。 | 
注
响应信息
200,HTTP body 中返回文件内容。请求信息
DELETE /<bucket>/<path_to_file>  
响应信息
200。请求信息
HEAD /<bucket>/<path_to_file>
响应信息
200,返回头信息如下所示:  | 响应头 | 说明 | 
|---|---|
| Last-Modified | 最后修改时间 | 
| ETag | 资源内容的哈希值,用于表示对象内容的变化,而不是元数据的变化。ETag 的值并不总是对象数据的 MD5 值,具体取决于请求的方式 | 
| x-amz-meta-x | 文件元数据 | 
请求信息
GET /<bucket>/<path_to_folder>/?list-type=2
分页参数
如果目录中文件数量过多,为了更友好的获取文件信息,可以分页获取:
参数
| 参数 | 必选 | 类型 | 说明 | 
|---|---|---|---|
| list-type | 是 | string | API 的第二版本要求使用该参数,并且值必须设置为 2 | 
| max-keys | 否 | string | 返回资源的最大数量。默认值为 1000 | 
| prefix | 否 | string | 指定前缀,只有资源名匹配该前缀的资源会被列出。默认值为空字符串 | 
| delimiter | 否 | string | 指定目录分隔符,列出所有公共前缀(模拟列出目录效果)。默认值为空字符串 | 
该请求操作的实现仅使用了所有操作的公共请求头。有关详细信息,请查阅公共请求头
响应信息
该请求操作的实现仅使用了所有操作的公共响应头。有关详细信息,请查阅公共响应头
200,列表格式为json,如下:响应内容
| 参数 | 类型 | 说明 | 
|---|---|---|
| Delimiter | string | 指定目录分隔符 | 
| IsTruncated | Boolean | 返表示是否还有更多可返回的资源。当所有结果都已返回时,该参数设为false;当还有更多资源可返回时,该参数设为true。如果结果数量超过了MaxKeys指定的数量,可能不会返回所有结果 | 
| MaxKeys | string | 返回的资源的最大数量 | 
| Prefix | string | 以特定前缀开头的资源 | 
| ContinuationToken | string | 如果请求中带有 Continuation-token,它将包含在响应中 | 
| NextContinuationToken | string | 返如果响应被截断,S3 将返回此参数及其对应的续传令牌。您可以将该令牌作为 continuation-token 在下一个请求中指定,检索下一组资源 | 
| CommonPrefixes | string | 将合并为公共前缀的资源计为单个返回,并列出充当子目录的资源 | 
| ETag | string | 对象的 MD5 哈希值。ETag 仅反映对象内容的更改,而不包括其元数据的更改 | 
| Key | string | 资源名称 | 
| LastModified | DATE | 对象的最后修改日期和时间 | 
| Size | string | 对象的大小,以字节为单位 | 
举例
261GET /?list-type=2 HTTP/1.1 2Host: bucket-7.fss-my.vhostgo.com3X-Amz-Date: 20230628T063714Z4Authorization: authorization string5Content-Type: text/plain 67HTTP/1.1 200 OK 8<?xml version="1.0" encoding="UTF-8"?>9<ListBucketResult xmlns="http://fss-my.vhostgo.com/doc/2006-03-01/">10   <Name>bucket</Name>11   <Prefix/>12   <KeyCount>205</KeyCount>13   <MaxKeys>1000</MaxKeys>14   <IsTruncated>false</IsTruncated>15   <Contents>16      <Key>my-image.jpg</Key>17      <LastModified>2022-10-12T17:50:30.0Z</LastModified>18      <ETag>"fba9dede5f27731c9771645a39863328"</ETag>19      <Size>434234</Size>20      <StorageClass>STANDARD</StorageClass>21   </Contents>22   <Contents>23      ...24   </Contents>25   ...26</ListBucketResult>