diff --git a/gitlab/__init__.py b/gitlab/__init__.py index c9716c282..5cd56b5a3 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -23,6 +23,7 @@ import warnings import requests +from requests_toolbelt.multipart.encoder import MultipartEncoder import gitlab.config from gitlab.const import * # noqa @@ -500,9 +501,12 @@ def http_request( # We need to deal with json vs. data when uploading files if files: - data = post_data + my_data = post_data json = None - del opts["headers"]["Content-type"] + my_data["file"] = files["file"] + files = None + data = MultipartEncoder(my_data) + opts["headers"]["Content-type"] = data.content_type else: json = post_data data = None diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 1750a3641..a8794311d 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -4792,8 +4792,8 @@ def import_project( Returns: dict: A representation of the import status. """ - files = {"file": ("file.tar.gz", file)} - data = {"path": path, "overwrite": overwrite} + files = {"file": ("file.tar.gz", file, 'application/octet-stream')} + data = {"path": path, "overwrite": str(overwrite)} if override_params: for k, v in override_params.items(): data["override_params[%s]" % k] = v diff --git a/requirements.txt b/requirements.txt index d5c2bc9c6..d2b6a0fb5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ requests>=2.22.0 +requests-toolbelt>=0.9.1 diff --git a/setup.py b/setup.py index 6b5737300..3ef170d03 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ def get_version(): license="LGPLv3", url="https://github.com/python-gitlab/python-gitlab", packages=find_packages(), - install_requires=["requests>=2.22.0"], + install_requires=["requests>=2.22.0", "requests-toolbelt>=0.9.1"], python_requires=">=3.6.0", entry_points={"console_scripts": ["gitlab = gitlab.cli:main"]}, classifiers=[