【问题标题】:Upload image in gitlab project using gitlab API使用 gitlab API 在 gitlab 项目中上传图片
【发布时间】:2017-09-15 20:54:29
【问题描述】:

我正在尝试在 gitlab 的项目中上传图像。根据documentation 它不应该是一门火箭科学。我试图将图像作为 url 和 base-64 表示形式传递。如果我对 base-64 URL 进行编码,会有一点进展 - 内部服务器错误。有任何想法吗?谢谢!

【问题讨论】:

  • 您的问题得到答案了吗?我遇到了同样的问题。
  • 注意“将文件上传到指定项目以用于问题或合并请求描述或评论。”这和上传到仓库不一样

标签: api file-upload gitlab


【解决方案1】:

由于您没有提到要如何上传..

使用卷曲:

curl --request POST --header "PRIVATE-TOKEN: XXXXXXXXXX" --form "file=@dk.png" https://gitlab.example.com/api/v4/projects/5/uploads

5 是您的项目的 ID。

gitlab api doc

【讨论】:

    【解决方案2】:

    根据这篇文章: Encoding an image file with base64

    我们可以理解如何将二进制文件转换为 base64 字符串,包括图像、zip 或 pickle 等。 这是我的代码的一部分。希望对您有所帮助。

    import gitlab
    def test_upload_img_to_repo():
        
        gitlab.Gitlab(url=HOST, private_token=PERSONAL_TOKEN)
        project = gl.projects.get(project_id)
        file_path = path.join(path.dirname(__file__), 'test_upload.txt')
        img_path  = path.join(path.dirname(__file__), 'logo.png')
        data = {
            'branch': 'master',
            'commit_message': 'blah blah blah',
            'actions': [
                {
                    'action': 'update',
                    'file_path': 'upload.txt',
                    'content': open(file_path).read(),
                },
                {
                    # Binary files need to be base64 encoded
                    'action': 'create',
                    'file_path': '/folder/logo.png',
                    'content': base64.b64encode(open(img_path,'rb').read()).decode(),
                    'encoding': 'base64',
                }
            ]
        }
    
        commit = project.commits.create(data)
        print(commit)
        
    
    

    【讨论】:

      猜你喜欢
      • 2023-02-02
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 2021-05-28
      相关资源
      最近更新 更多