Zip images et mime type

Résolu
cs_DjChat Messages postés 69 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 25 novembre 2010 - 18 nov. 2010 à 09:51
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 !!!
A voir également:

3 réponses

lespinx Messages postés 106 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 23 novembre 2022 77
18 nov. 2010 à 19:49
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:
3
cs_DjChat Messages postés 69 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 25 novembre 2010
18 nov. 2010 à 12:10
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 !!! ;)
0
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
Merci pour ton aide !!! ;)
0
Rejoignez-nous