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

用户文件上传

  • 版本:免费版、高级版、旗舰版
  • 提供方式:GitLab.com、GitLab 自托管、GitLab 专用

用户可以上传文件到:

  • 项目中的 Issue 或 Merge Request。
  • 组中的 Epic。

GitLab 为这些上传的文件生成直接 URL,URL 中包含一个随机的 32 字符 ID,以防止未经授权的用户猜测 URL。这种随机化对于包含敏感信息的文件提供了一定的安全性。

用户上传到 GitLab Issue、Merge Request 和 Epic 的文件,其 URL 路径中包含 /uploads/<32-character-id>

请谨慎下载来自未知或不可信来源的文件,特别是当文件是可执行文件或脚本时。

上传文件的访问控制

对非图像文件的访问权限:

  • Issue 或 Merge Request 的访问权限由项目可见性决定。
  • 组 Epic 的访问权限由组可见性决定。

对于公共项目或组,任何人都可以通过直接附件 URL 访问这些文件,即使 Issue、Merge Request 或 Epic 是保密的。 对于私有和内部项目,GitLab 确保只有经过认证的项目成员可以访问非图像文件上传,例如 PDF。 默认情况下,图像文件没有相同的限制,任何人都可以使用 URL 查看它们。要保护图像文件,为所有媒体文件启用授权检查,使其仅对经过认证的用户可见。

图像的认证检查可能导致通知邮件正文中的显示问题。 邮件经常从未与 GitLab 认证的客户端(如 Outlook、Apple Mail 或您的移动设备)中读取。 如果客户端未获得 GitLab 授权,邮件中的图像将显示为损坏且不可用。

为所有媒体文件启用授权检查

在私有和内部项目中,只有经过认证的项目成员可以查看非图像附件(包括 PDF)。

要将认证要求应用于私有或内部项目中的图像文件:

先决条件:

  • 您必须拥有项目的 Maintainer 或 Owner 角色。
  • 您的项目可见性设置必须为 私有内部

要为所有媒体文件配置认证设置:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 设置 > 常规
  3. 展开 可见性、项目功能、权限
  4. 滚动到 项目可见性 并选择 需要认证才能查看媒体文件

您不能为公共项目选择此选项。

删除上传的文件

当上传的文件包含敏感或机密信息时,您应该删除该文件。当您删除该文件后,用户将无法访问该文件,直接 URL 将返回 404 错误。

项目所有者和维护者可以使用 交互式 GraphQL 探索器 访问 GraphQL 端点 并删除上传的文件。

例如:

mutation{
  uploadDelete(input: { projectPath: "<path/to/project>", secret: "<32-character-id>" , filename: "<filename>" }) {
    upload {
      id
      size
      path
    }
    errors
  }
}

没有所有者或维护者角色的项目成员无法访问此 GraphQL 端点。

您还可以使用 项目 的 REST API 来删除上传的文件。