Help us learn about your current experience with the documentation. Take the survey.

Markdown 上传 API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

Markdown 上传是上传到项目的文件,可以在问题、合并请求、代码片段或 Wiki 页面的 Markdown 文本中引用。

上传文件

将文件上传到指定项目,用于问题或合并请求的描述,或评论中。

POST /projects/:id/uploads

支持的属性:

属性 类型 必需 描述
file string 要上传的文件。
id integer or string ID 或项目的 URL 编码路径

要从文件系统上传文件,请使用 --form 参数。这会使 cURL 使用 Content-Type: multipart/form-data 标头发布数据。file= 参数必须指向您文件系统上的文件,并且前面必须加上 @

示例请求:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "[email protected]" "https://gitlab.example.com/api/v4/projects/5/uploads"

示例响应:

{
  "id": 5,
  "alt": "dk",
  "url": "/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "full_path": "/-/project/1234/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "markdown": "![dk](/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png)"
}

在响应中:

  • full_path 是文件的绝对路径。
  • url 可用于 Markdown 上下文。当使用 markdown 中的格式时,链接会展开。

列出上传文件

获取项目的所有上传文件,按 created_at 降序排列。

先决条件:

  • 至少需要 Maintainer 角色。
GET /projects/:id/uploads

支持的属性:

属性 类型 必需 描述
id integer or string ID 或项目的 URL 编码路径

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/uploads"

示例响应:

[
  {
    "id": 1,
    "size": 1024,
    "filename": "image.png",
    "created_at":"2024-06-20T15:53:03.067Z",
    "uploaded_by": {
      "id": 18,
      "name" : "Alexandra Bashirian",
      "username" : "eileen.lowe"
    }
  },
  {
    "id": 2,
    "size": 512,
    "filename": "other-image.png",
    "created_at":"2024-06-19T15:53:03.067Z",
    "uploaded_by": null
  }
]

通过 ID 下载上传的文件

通过 ID 下载上传的文件。

先决条件:

  • 至少需要 Maintainer 角色。
GET /projects/:id/uploads/:upload_id

支持的属性:

属性 类型 必需 描述
id integer or string ID 或项目的 URL 编码路径
upload_id integer 上传的 ID。

如果成功,返回 200 状态码和响应体中的上传文件。

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/uploads/1"

通过密钥和文件名下载上传的文件

通过密钥和文件名下载上传的文件。

先决条件:

  • 至少需要 Guest 角色。
GET /projects/:id/uploads/:secret/:filename

支持的属性:

属性 类型 必需 描述
id integer or string ID 或项目的 URL 编码路径
secret string 上传的 32 字符密钥。
filename string 上传的文件名。

如果成功,返回 200 状态码和响应体中的上传文件。

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/uploads/648d97c6eef5fc5df8d1004565b3ee5a/sample.jpg"

通过 ID 删除上传的文件

通过 ID 删除上传的文件。

先决条件:

  • 至少需要 Maintainer 角色。
DELETE /projects/:id/uploads/:upload_id

支持的属性:

属性 类型 必需 描述
id integer or string ID 或项目的 URL 编码路径
upload_id integer 上传的 ID。

如果成功,返回 204 状态码,不包含任何响应体。

示例请求:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/uploads/1"

通过密钥和文件名删除上传的文件

通过密钥和文件名删除上传的文件。

先决条件:

  • 至少需要 Maintainer 角色。
DELETE /projects/:id/uploads/:secret/:filename

支持的属性:

属性 类型 必需 描述
id integer or string ID 或项目的 URL 编码路径
secret string 上传的 32 字符密钥。
filename string 上传的文件名。

如果成功,返回 204 状态码,不包含任何响应体。

示例请求:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/uploads/648d97c6eef5fc5df8d1004565b3ee5a/sample.jpg"