【问题标题】:Gitlab api upload in python在python中上传Gitlab api
【发布时间】:2017-09-07 09:40:14
【问题描述】:

根据官方文档 curl 请求是

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

我把它改成python并得到

import requests

headers = {

    'PRIVATE-TOKEN': 'my_token'
}
form = {
    'file': '@gaa.pdf'
}
print(requests.post('https://gitlab.com/api/v3/projects/4067343/uploads', headers=headers, form=form))

我有这样的回应

Traceback (most recent call last):
  File "/home/k/pro/rat/try.py", line 19, in <module>
    print(requests.post('https://gitlab.com/api/v3/projects/4067343/uploads', headers=headers, form=form))
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 112, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
TypeError: request() got an unexpected keyword argument 'form'

我应该怎么做才能得到链接而不是错误的响应?

【问题讨论】:

  • 你忘了说你遇到了什么问题。
  • 已添加,谢谢))))
  • wget 命令中的 Token 是被截断了还是你真正的 token ?
  • 这是来自文件的假冒,但我使用我的令牌
  • requests.post 不支持form参数。请参阅this question 如何将curl--form 转换为Python 的请求。

标签: python api gitlab


【解决方案1】:

解决了

def upload_file(project_id, filename, gitlab_token):
    url = 'https://gitlab.com/api/v4/projects/{0}/uploads'.format(project_id)
    headers = {'PRIVATE-TOKEN': gitlab_token}
    files = {'file': open('{0}'.format(filename), 'rb')}
    r = requests.post(url, headers=headers, files=files)

    if r.status_code == 200 or r.status_code == 201:
        print('Uploading the file {0}....'.format(filename))
    else:
        print('File {0} was not uploaded'.format(filename))

    markdown = r.json()['markdown']
return markdown

【讨论】:

    【解决方案2】:

    你应该看看Python Gitlab 包。它为您提供了对 GitLab 服务器 API 的便捷访问。将文件上传到项目的 API 目前正在 PR (https://github.com/python-gitlab/python-gitlab/pull/239) 中进行审核

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 2021-12-18
      • 2021-08-30
      • 2022-11-04
      • 2019-07-05
      • 2022-11-09
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多