如何下载文件内容?

Viewed 1

我想通过 API 下载一个文件的最新版本,下载是直接返回文件流吗?为什么我拿到的是一个 URL 而不是文件内容?需要处理重定向吗?

1 Answers

下载与上传一样是两段式:先调协议接口拿到对象存储的下载凭证,再自行 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。