如何使用Python下载JIRA附件文件



我想在jira python中下载问题的附件文件。

我使用jira python lib,您可以使用pip install jira

 # -- coding: UTF-8 --
    from jira import JIRA
    import requests
    url = 'https://jira.1234.com'
    jira = JIRA(server=url, basic_auth=('admin', 'password'))
    attachment=jira.attachment(12345) #12345 is attachment_key
    image = attachment.get()
    with open("Image.png", 'wb') as f:
        f.write(image)

jira公开其休息服务,通过那个python,您可以下载任何附件。

它对我有用(您需要调整变量(:

#!/usr/bin/python
# miguel ortiz
# Requests module: http://docs.python-requests.org/en/latest/
# Documentation: <url>
#----------------------------------------------------------------Modules
import sys
import csv, json
import requests
#----------------------------------------------------------------Variables   
myTicket= sys.argv[1] # Your ticket: ABC-123
user = 'miguel'     # JIRA user
pasw = 'password' # JIRA password
jiraURL = 'https://yourinstance.jira.com/rest/api/latest/issue/'
fileName = 'my_attached_file' # In this case we'll be looking for a specific file in the attachments
attachment_final_url="" # To validate if there are or not attachments

def main() :
    print 'nn [ You are checking ticket: ' + myTicket+ ' ]n'
    # Request Json from JIRA API
    r = requests.get(jiraURL+myTicket, auth=(user, pasw),timeout=5)
    # status of the request
    rstatus = r.status_code
    # If the status isn't 200 we leave
    if not rstatus == 200 :
        print 'Error accesing JIRA:' + str(rstatus)
        exit()
    else:
        data = r.json()
    if not data['fields']['attachment'] :            
      status_attachment = 'ERROR: Nothing attached, attach a file named: ' + fileName
      attachment_final_url=""
    else:
        for i in data['fields']['attachment'] :
          if i['filename'] == fileName :
             attachment_final_url = i['content']
             status_attachment_name = 'OK: The desired attachment exists: ' + fileName 
             attachment_name = False
             attachment_amount = False
             attachment_files = False
             break
          else :
            attachment_files = False
            status_attachment_name = + 'ERROR: None of the files has the desired name ' 
            attachment_final_url=""
            attachment_name = True
            attachment_amount = True
            continue
    if attachment_final_url != "" :
        r = requests.get(attachment_final_url, auth=(user, pasw), stream=True)
        with open(fileName, "wb") as f: 
            f.write(r.content.decode('iso-8859-1').encode('utf8'))
        f.close()
    else: 
        print status_attachment
if __name__ == "__main__" :
 main()

如果您不了解我在博客中更好地详细详细介绍的代码。

编辑:请小心,在JIRA中,您可以添加许多具有相同名称的文件。