Zip images et mime type [Résolu]

Messages postés
69
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
25 novembre 2010
- - Dernière réponse : cs_DjChat
Messages postés
69
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
25 novembre 2010
- 19 nov. 2010 à 09:48
Bonjours a tous, j'ai une page de mon site où on peux sélectionner des images, j'aimerai que quand l'utilisateur click sur un submit, que je lui propose de télécharger un fichier zip avec les images sélectionner a l'intérieur...

Pour la partie récupérations des id de mes images, y a pas de souci je les ai mi dans un tableau, par contre je ne vois pas comment zippé mes images je n'ai jamais fais ceci, je c'est juste qu'il faut aussi que je pense au mime type...

Pouvez vous m'aider?

def download_items(request):
    select_items_download = request.POST.get('select_items_download', None)#Mon tableau


Merci d'avance !!!
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
97
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
7 décembre 2018
38
3
Merci
Bonsoir,
Voici quelques exemples d'utilisation du module "zipfile"
# -*- coding: ISO-8859-15 -*-
import zipfile
import os

def zip_file(ficzip, fichier):
    f = zipfile.ZipFile(ficzip,'w',zipfile.ZIP_DEFLATED)
    f.write(fichier)
    f.close()

def zip_file_multi(ficzip, dossier, lst_files):
    f = zipfile.ZipFile(ficzip,'w',zipfile.ZIP_DEFLATED)
    for fic in lst_files:
        #Est-ce un fichier?
        if os.path.isfile(os.path.join(dossier, fic)):
            f.write(fic)
    f.close()

def unzip_file(ficzip):
    zfile = zipfile.ZipFile(ficzip,'r')
    for filename in zfile.namelist():
        data = zfile.read(filename)
        print "unzip",filename
        f = open(filename, 'w+b')
        f.write(data)
    f.close()

def zip_list(ficzip):
    zip = zipfile.ZipFile(ficzip)
    zip.printdir()
#
#Main
#
#Nom du fichier cible
ficzip = os.path.join("C:\","test.zip")
#Nom du fichier source
fichier  = os.path.join("C:\","TestZip.txt")

#Appel procédure de compression
zip_file(ficzip, fichier)

#Liste du fichier compressé
zip_list(ficzip)
print "================"

#Appel procédure de dé-compression (dans le dossier courant)
print "Dossier courant",os.getcwd()
unzip_file(ficzip)

#Appel procédure de compression de plusieurs fichiers (du dossier courant)
dossier = os.getcwd()
lst_files = []
#Nom du fichier cible
ficzip = os.path.join("C:\","test_multi.zip")
#liste des fichiers du dossier courant (fichiers source)
lst_files = os.listdir(dossier)
#appel procédure
zip_file_multi(ficzip, dossier, lst_files)
#Liste du fichier compressé
zip_list(ficzip)


Au lieu de
if select_items_download is not None:
il est plus "pytonesque" d'ecrire
if select_items_download:

ou
if not select_items_download:

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lespinx
Messages postés
69
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
25 novembre 2010
0
Merci
Après quelque recherche, j'ai vue qu'il faut utiliser zipfile.

Mais je vous avoue que j'ai pas saisie tout le protocole, un peu d'aide ne serrai pas de refus... :euh:


def download_items(request):
    select_items_download = request.POST.get('select_items_download', None)
    if select_items_download is not None:
        try:
            for item_id in select_items_download.split(','):
                item = Item.objects.get(pk=item_id)
                
                item_url_hd = item.get_hd_url()#récupère l'url de l'image
                
                os.path.join("C:\\Documents and Settings\\moi\\Mes documents\\dev\\django-workarea\\ids\", item_url_hd)
                
                item_zip = zipfile.ZipFile(os.path,'w',zipfile.ZIP_DEFLATED) 
                
        except(Item.DoesNotExist):
                    raise Http404


Si j'ai bien compris faut que j'utilise os.path pour crée mon url entier où est stocké mon fichier.

Après faut que j'utilise zipfile pour le zipé, mais quand je repasse dans ma boucle pour zipé une autre image, l'image va ce zipé automatiquement dans l'ancien zip crée?

Je n'ai pas compris comment donner un nom a mon zip.

Faut t'il que j'attribue un endroit temporaire pour qu'il crée le zip, si oui comment?

Si j'ai saisie, normalement il faut mettre un chemin pour dire ou enregistrer le zip, mais vu que je veux que quand le zip est terminer ils soit envoyer sur mon template (j'utilise Django) pour que l'utilisateur télécharge le zip doit je aussi le faire, si oui comment :p et comment j'envoie le téléchargement ???

Désoler pour toute ces questions, mais j'ai du mal, merci d'avance pour votre aide !!! ;)
Commenter la réponse de cs_DjChat
Messages postés
69
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
25 novembre 2010
0
Merci
Merci pour ton aide !!! ;)
Commenter la réponse de cs_DjChat