我想通过 API 下载一个文件的最新版本,下载是直接返回文件流吗?为什么我拿到的是一个 URL 而不是文件内容?需要处理重定向吗?
下载与上传一样是两段式:先调协议接口拿到对象存储的下载凭证,再自行 GET 文件内容。使用 POST /api/efast/v1/file/osdownload(下载文件协议,支持用户账户与应用账户)。
请求体(FileOsdownloadReq,必填 docid):
| 字段 | 说明 |
|---|---|
docid |
文档 gns。 |
rev |
文件版本号,为空默认下载最新版本。 |
authtype |
默认空(鉴权放 Header);设为 QUERY_STRING 则鉴权放 URL。 |
savename |
QUERY_STRING 方式下载时可设置保存文件名。 |
请求示例:
POST /api/efast/v1/file/osdownload HTTP/1.1
Host: 192.168.1.100
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
{
"docid": "gns://337CF682A29B4B4AAE37947BE99E817B/FD6C37F52BE446FEA563D0A117DC487F",
"authtype": "QUERY_STRING",
"savename": "报告.docx"
}
响应示例(FileOsdownloadRes):
{
"authrequest": [
"GET",
"https://s3-ap-northeast-1.amazonaws.com/anyshares3accesstestbucket/21A9B9FD1B524CB49D54BF7399F82EB4/AAA6CBAFE45B4E4D884DC59805E60A5C",
"Authorization: AWS AKIAJEROARV2UTTADY6A:PkLXjvYrDGDVZgTD8WVbMmS33q4=",
"Date: Tue, 07 Apr 2015 02:35:36 GMT"
],
"rev": "91E6CBAFE45B4E4D884DC59805E60A5C",
"name": "testfile",
"editor": "user1",
"modified": 1380502294452719,
"size": 42,
"client_mtime": 1380245084296354
}
authrequest 含义:[0] 请求方法、[1] 资源 URL、[2] 及之后为 HTTP 请求头。客户端在 15 分钟内按此信息发起 GET。