I would like to attach files to confluence from the rest API using Python with Oauth.
I was trying with the code below but I get the following error message
Unsupported Media Type
description
The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
fileinfo = open(filename, 'rb') files = { 'file': fileinfo} headers = {'X-Atlassian-Token': 'no-check'} headers['Content-Type'] = 'text/plain' url = self._get_url('content/'+str(contentId) + "/child/attachment") r = self._session.post( url, files=files, headers=headers) #Where _session is my ResilientSession with Oauth info already setup
I was able to get this to work with the following code modified from the jira client, that came from pip install jira.
def content_attachment(self, contentId, filename): url = self._get_url('content/'+str(contentId) + "/child/attachment") #attachment will also work if you just pass the filename attachment = open(filename, 'rb') result = None try: if 'MultipartEncoder' not in globals(): #method = 'old' result = self._session.post( url, files={ 'file': (filename, attachment, 'application/octet-stream')}, headers=CaseInsensitiveDict({'content-type': None, 'X-Atlassian-Token': 'nocheck'})) else: #method = 'MultipartEncoder' def file_stream(): return MultipartEncoder( fields={ 'file': (filename, attachment, 'application/octet-stream')}) m = file_stream() result = self._session.post( url, data=m, headers=CaseInsensitiveDict({'content-type': m.content_type, 'X-Atlassian-Token': 'nocheck'}), retry_data=file_stream) except JIRAError as e: if e.status_code == 400: logging.error(str(e)) return raise if not result or not isinstance(result, collections.Iterable): raise JIRAError("Unable to parse JSON: %s" % result) for data in result: print (data) for fields in result.get(data): print (fields) return fields.get("id") return json_loads(result)
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.