2017-09-12 7 views
0

J'ai besoin d'une aide. J'ai besoin de télécharger le fichier à partir de la source distante et de le stocker dans le dossier local en utilisant Python. J'explique mon code ci-dessous.Comment télécharger le fichier depuis une source distante et l'enregistrer dans un dossier local en utilisant Python

def downloadfile(request): 
    """ This function helps to download the file from remote site""" 

    if request.method == 'POST': 
     URL = request.POST.get('file') #i.e-http://koolfeedback.com/beta/about-us.php 
     filename = "status" 
     with open(filename,'wb') as fyl: 
      fyl.write(urllib2.urlopen(URL).read()) 
      fyl.close() 

Ici je télécharger la page et stocker dans le dossier du download local à l'aide zip format.Please me aider.

+0

Qu'est-ce que 'request' signifie ici? – Rahul

+0

J'ai déjà mentionné les données de poste. 'request.POST.get ('file') = http: // koolfeedback.com/beta/about-us.php'. Cette URL provient du paramètre de formulaire et j'ai besoin de télécharger cette page exacte et de la stocker dans le dossier local. – subhra

+0

On dirait que vous enregistrez déjà le contenu de cette URL dans un fichier nommé "status". Voulez-vous compacter ce fichier en utilisant la compression DEFLATE et le déplacer vers un dossier nommé download? –

Répondre

1

Vous voulez probablement utiliser la fonction urlliburlretrieve plutôt que urlopen, qui est pour l'ouverture des fichiers à distance (par exemple un fichier texte sur un serveur distant vous ce qu'il faut lire le texte à partir, pas les fichiers que vous souhaitez télécharger).

Voir aussi: https://stackoverflow.com/a/22682/6328995

+0

Non, mon objectif principal est d'inclure le fichier distant. – subhra

+0

alors juste le lier? – Jingo

+0

avez-vous essayé: 'fyl.write ((urllib2.urlopen (URL)). Read())'? l'imbrication des fonctions peut être à l'origine du problème. En outre, essayez de remplacer cette ligne par 'print (urllib2.urlopen (URL)). Read())' pour voir si elle lit correctement le fichier – Tyler

0

Si vous utilisez django quelque chose comme ça;

folder_to_store = "path/to/folder" 
full_filename = os.path.join(folder_to_store, request.FILES['file'].name) 
fout = open(full_filename, 'wb+') 
for chunk in fout.chunks(): 
    fout.write(chunk) 
fout.close()