> ## Documentation Index
> Fetch the complete documentation index at: https://enterprise-docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 下载文件

> **适用于**：Workflow、Chatflow。

返回文件的原始字节内容，用于预览或下载。文件必须属于发起调用的应用、当前环境和该 `user`。

**对应的标准 API 接口**：[下载文件](/zh/3.13.x/develop/api/files/download-file)。差异：

- 通过 `kind` 参数选择文件来源。
- `user` 为必填。
- 错误码不同。



## OpenAPI

````yaml /zh/3.13.x/develop/api/openapi_service.json get /v2/files/{file_id}/preview
openapi: 3.0.1
info:
  title: Dify 服务 API
  description: 用于 Dify 应用与知识库的 REST API。应用类接口使用应用 API 密钥认证，知识库类接口使用知识库 API 密钥认证。
  version: 1.0.0
servers:
  - url: https://{api_base_url}
    description: Dify 服务 API 的基础 URL。替换为你部署的 API 基础 URL。
    variables:
      api_base_url:
        default: api.example.com/v1
        description: API 基础 URL 的主机与路径，不含 `https://` 前缀。
security:
  - ApiKeyAuth: []
tags:
  - name: 对话消息
    description: 与聊天消息和交互相关的操作。
  - name: 文件操作
    description: 文件上传和预览操作。
  - name: 终端用户
    description: 终端用户信息相关操作。
  - name: 消息反馈
    description: 用户反馈操作。
  - name: 会话管理
    description: 与管理会话相关的操作。
  - name: 语音与文字转换
    description: 文字转语音和语音转文字操作。
  - name: 应用配置
    description: 获取应用设置和信息的操作。
  - name: 标注管理
    description: 与管理标注直接回复相关的操作。
  - name: 人工介入
    description: 暂停等待人工输入的工作流恢复操作。
  - name: 工作流运行
    description: 用于执行和管理工作流的操作。
  - name: 文本生成消息
    description: 文本生成相关操作。
  - name: 知识库
    description: 用于管理知识库的操作，包括创建、配置和检索。
  - name: 文档
    description: 用于在知识库中创建、更新和管理文档的操作。
  - name: 分段
    description: 用于管理分段和子分段的操作。
  - name: 元数据
    description: 用于管理知识库元数据字段和文档元数据值的操作。
  - name: 标签
    description: 用于管理知识库标签和标签绑定的操作。
  - name: 模型
    description: 用于获取可用模型的操作。
  - name: 知识流水线
    description: 用于管理和运行知识流水线的操作，包括数据源插件和流水线执行。
  - name: 部署环境
    description: >-
      部署环境通过 `v2` 基础 URL 提供的接口。部署环境只提供本组中的接口，调用其他路径会返回 `404
      not_found`。认证方式和错误码与标准服务 API 不同，部署环境以本组页面为准。
paths:
  /v2/files/{file_id}/preview:
    get:
      tags:
        - 部署环境
      summary: 下载文件
      description: |-
        **适用于**：Workflow、Chatflow。

        返回文件的原始字节内容，用于预览或下载。文件必须属于发起调用的应用、当前环境和该 `user`。

        **对应的标准 API 接口**：[下载文件](/zh/3.13.x/develop/api/files/download-file)。差异：

        - 通过 `kind` 参数选择文件来源。
        - `user` 为必填。
        - 错误码不同。
      operationId: downloadDeployedFileCn
      parameters:
        - name: file_id
          in: path
          required: true
          description: >-
            要下载的文件
            ID，有两个来源：[上传文件](/zh/3.13.x/develop/api/deployed-environments/upload-file)
            响应中的 `id`，以及
            [获取会话历史消息](/zh/3.13.x/develop/api/deployed-environments/list-conversation-messages)
            返回的消息里 `message_files` 各项的 `upload_file_id`。工具生成的文件需要带上 `kind=tool`。
          schema:
            type: string
            format: uuid
        - name: user
          in: query
          required: true
          description: >-
            终端用户标识，由你的应用定义，需在应用内唯一。必须与拥有该文件的 `user` 一致。参见
            [终端用户身份](/zh/3.13.x/develop/api/guides/end-user-identity)。
          schema:
            type: string
            minLength: 1
            maxLength: 255
        - name: as_attachment
          in: query
          required: false
          description: 为 `true` 时，文件以附件形式下载，而不是在浏览器中内联渲染。
          schema:
            type: boolean
            default: false
        - name: kind
          in: query
          required: false
          description: 文件来源。消息载荷中返回的 URL 已带上正确的值，只有自行拼接 URL 时才需要手动设置。
          schema:
            type: string
            enum:
              - upload
              - tool
            default: upload
      responses:
        '200':
          description: >-
            文件的原始内容。`Content-Type` 为文件自身的 MIME 类型。当 `as_attachment` 为 `true`
            时，响应改为 `application/octet-stream`，并带上 `Content-Disposition:
            attachment`。HTML 文件无论 `as_attachment` 取什么值，都以下载方式返回。
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            - `invalid_param`：`user`、`kind` 或 `as_attachment` 无效，此时 `message` 为
            `invalid argument`。

            - `invalid_param`：`file_id` 不是 UUID，此时 `message` 为 `invalid id`。

            - `app_unavailable`：该应用当前无法在此环境中处理 API 请求。
                - 应用关闭了 API 访问。
                - 应用未在此环境中部署。
                - 部署仍在进行中。
                - 环境正在删除。

                联系应用负责人确认 **访问点** 标签页的设置，或联系管理员在企业管理后台中查看该环境，待应用恢复服务后再重试。
          content:
            application/json:
              examples:
                invalid_param:
                  summary: invalid_param
                  value:
                    code: invalid_param
                    message: invalid argument
                    status: 400
                invalid_param_id:
                  summary: invalid_param（invalid id）
                  value:
                    code: invalid_param
                    message: invalid id
                    status: 400
                app_unavailable:
                  summary: app_unavailable
                  value:
                    status: 400
                    code: app_unavailable
                    message: App unavailable, please check your app configurations.
        '401':
          description: '`unauthorized`：API 密钥缺失、格式错误、无法识别或已撤销。'
          content:
            application/json:
              examples:
                unauthorized:
                  summary: unauthorized
                  value:
                    code: unauthorized
                    message: Access token is invalid
                    status: 401
        '404':
          description: >-
            - `file_not_found`：文件不存在，或不属于发起调用的应用、环境、`user` 和 `kind`。

            - `APPDEPLOY_APP_NOT_FOUND`：Dify 中找不到该 API
            密钥所属的应用。请确认应用仍然存在。`message` 为 `app not found`。
          content:
            application/json:
              examples:
                file_not_found:
                  summary: file_not_found
                  value:
                    status: 404
                    code: file_not_found
                    message: The requested file was not found.
                app_not_found:
                  summary: APPDEPLOY_APP_NOT_FOUND
                  value:
                    code: APPDEPLOY_APP_NOT_FOUND
                    message: app not found
                    status: 404
        '500':
          description: '`internal_server_error`：平台未能完成本次请求。可重试，若持续出现则联系管理员。'
          content:
            application/json:
              examples:
                internal_server_error:
                  summary: internal_server_error
                  value:
                    code: internal_server_error
                    message: internal error
                    status: 500
        '503':
          description: '`internal_server_error`：文件服务暂时不可用。可重试，若持续出现则联系管理员。'
          content:
            application/json:
              examples:
                internal_server_error:
                  summary: internal_server_error
                  value:
                    code: internal_server_error
                    message: file service unavailable
                    status: 503
      servers:
        - url: https://{deployed_api_base_url}
          description: 所有部署环境共用的基础 URL，即把标准服务 API 地址中的 `/v1` 换成 `/v2`。
          variables:
            deployed_api_base_url:
              default: api.example.com
              description: >-
                打开应用的 **访问点** 标签页，从任一部署环境的 **后端服务 API** 卡片复制完整 URL，再去掉开头的
                `https://` 和末尾的 `/v2`。
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: API_KEY
      description: >-
        每个请求都通过 API Key 认证：`Authorization: Bearer {API_KEY}`。应用接口使用应用 API
        Key，知识库接口使用知识库 API
        Key（[快速开始](/zh/3.13.x/develop/api/guides/get-started)）。


        API Key 应保存在服务端，切勿嵌入客户端代码。缺失或无效的 Key 会返回 HTTP `401`（`unauthorized`）。

````