# 下载文件

下载云空间中的文件，如 PDF 文件。不包含飞书文档、电子表格以及多维表格等在线文档。该接口支持通过在请求头添加 `Range` 参数分片下载部分文件。

## 前提条件

调用此接口之前，你需确保应用已拥有文件的下载权限。否则接口将返回 403 的 HTTP 状态码。参考[云空间常见问题](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/faq)第五点了解如何分享文件的下载权限给应用。更多云文档接口权限问题，参考[云文档常见问题](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN)。

## 注意事项

本接口仅支持下载云空间中的资源文件。要下载云文档中的素材（如图片、附件等），需调用[下载素材](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/download)接口。

## 使用限制

该接口调用频率上限为 5 QPS，10000 次/天。否则会返回 1061045 错误码，可通过稍后重试解决。

## 请求

基本 | &nbsp;
---|---
HTTP URL | https://open.feishu.cn/open-apis/drive/v1/files/:file_token/download
HTTP Method | GET
接口频率限制 | [特殊频控](https://open.feishu.cn/document/ukTMukTMukTM/uUzN04SN3QjL1cDN)
支持的应用类型 | Custom App、Store App
权限要求<br>**调用该 API 所需的权限。开启其中任意一项权限即可调用**<br>开启任一权限即可 | 查看、评论、编辑和管理云空间中所有文件(drive:drive)<br>查看、评论和下载云空间中所有文件(drive:drive:readonly)<br>上传、下载文件到云空间(drive:file)<br>下载云空间下的文件(drive:file:download)<br>查看和下载云空间中的文件(drive:file:readonly)

### 请求头

名称 | 类型 | 必填 | 描述
---|---|---|---
Authorization | string | 是 | `tenant_access_token`<br>或<br>`user_access_token`<br>**值格式**："Bearer `access_token`"<br>**示例值**："Bearer u-7f1bcd13fc57d46bac21793a18e560"<br>[了解更多：如何选择与获取 access token](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-choose-which-type-of-token-to-use)

### 部分下载

名称 | 类型 | 必填 | 描述
---|---|---|---
Range | string | 否 | 在 HTTP 请求头中，通过指定 `Range` 来下载文件的部分内容，单位是字节（byte）。该参数的格式为 `Range: bytes=start-end`，示例值为 `Range: bytes=0-1024`，表示下载第 0 个字节到第 1024 个字节之间的数据。

### 路径参数

名称 | 类型 | 描述
---|---|---
file_token | string | 文件的 token，获取方式见[文件概述](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/file/file-overview)。<br>**示例值**："boxcnabCdefgabcef"

### 请求示例
以下代码示例展示如何使用 `cURL` 命令下载文件，并将文件命名为 local_file。
```bash
# 将 Token 为 file_token 的云空间中的文件下载到本地，并命名为 local_file，注意 file_token、local_file 和 authorization 要替换为真实值
curl -i -X GET 'https://open.feishu.cn/open-apis/drive/v1/files/{file_token}/download' -o "{local_file}" \
-H 'Authorization: {authorization}'
```

## 响应

### 响应头

名称 | 类型 | 描述
---|---|---
Content-Type | string | 文件的`MIME`，比如：`application/vnd.openxmlformats-officedocument.wordprocessingml.document`
Content-Disposition | string | 文件名

HTTP状态码为 200 时，表示成功

返回文件二进制流

## 状态码

| HTTP 状态码 | 描述 |  
|---|---|---|
| 200 | 文件成功下载。返回文件二进制流。 |  
| 206 | 下载部分内容成功。接口将返回指定 Range 的部分文件的二进制流。 |  
| 403 | 没有下载文件的权限。要下载文件，你需确保调用身份拥有文档资源权限。详情参考[云文档常见问题 3](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN#16c6475a)开通权限。 |  
| 404 | 文件 token 不存在或文件被删除。请检查 token 是否有误以及文件是否存在。注意放置在文件夹和知识库中的文件，其 token 的获取方式不同，详情参考[文件概述-文件 token 获取方式](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/file/file-overview#2b224832)。 ||
| 500 | 服务端内部异常。请重试或联系[技术支持](https://applink.feishu.cn/TLJpeNdW)。 |  

## 后续操作
接口调用成功后，你可以通过访问你在下载时指定的本地下载目录，对已下载的文件进行下一步操作。

