2017-06-19 7 views
1

Je suis en train de télécharger une exportation d'espace dans un fichier zip. Mais de toute façon python télécharge un fichier zip vide et corrompu. Lorsque vous téléchargez le manuel du fichier par le navigateur, tout va bien.urllib.urlretrieve téléchargements fichiers zip vides

J'utilise Python 2.7.13

#!/usr/bin/python 
import xmlrpclib 
import time 
import urllib 

confluencesite = "https://confluence.com" 
server = xmlrpclib.ServerProxy(confluencesite + '/rpc/xmlrpc') 
username = '*' 
password = '*' 
token = server.confluence2.login(username, password) 
loginString = "?os_username=" + username + "&os_password=" + password 
filelist = "" 
start = True 
spacesummary = server.confluence2.getSpaces(token) 
for space in spacesummary: 
    #if space['name'] == "24-codING": 
    # start = True 
    # continue 
    if start: 
     if space['type'] == 'global': 
      print "Exporting space " + space['name'] 
      spaceDownloadUrl = server.confluence2.exportSpace(token, space['key'], 
                   "TYPE_XML", 
                   exportAll['true']) 
      filename = spaceDownloadUrl.split('/')[-1].split('#')[0].split('?')[0] 
      time.sleep(0.5) 
      urllib.urlretrieve(spaceDownloadUrl + loginString, filename) 
      print filename + " saved." 
      f = open("exportedspaces.txt", 'a') 
      f.write(filename + "\n") 
      f.close() 
+0

Je ne vois aucun fichier zip dans le code; est-ce censé être 'f = open (" exportedspaces.txt ", 'a')'? – snakecharmerb

+0

@snakecharmerb Le fichier zip est produit par l'action API exportSpace, qui crée le fichier zip qui peut être téléchargé. Par exemple: Confluence-space-export-122851-90.xml.zip –

+1

Devrait probablement changer '&' en '&'. –

Répondre

2

Il est résolu par la réponse de Coldspeed. Modification de ce qui suit:

loginString = "?os_username=" + username + "&os_password=" + password 
to 
loginString = "?os_username=" + username + "&os_password=" + password 
+2

Enfants, assurez-vous toujours de désinfecter vos paramètres url. OP, marquez votre réponse acceptée et fermez cette question. À votre santé. –