IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Microsoft Azure Discussion :

Décompression fichier .zip via le cloud


Sujet :

Microsoft Azure

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Par défaut Décompression fichier .zip via le cloud
    Bonjour,

    désolé pour le titre large, je ne savais vraiment pas comment l'intitulé...

    voilà ce que je cherche à faire:

    j'ai mon application web (Web Role) où je peux uploader un fichier .zip contenant des photos.
    Je rajoute ce fichier .zip dans un Blob sur le Cloud Storage , en même temps, je rajoute un message dans une Queue (toujours sur le Cloud Storage) qui contient le nom du fichier précédemment uploader.

    A côté, j'ai un Worker Role qui traite les messages dans la Queue:

    Le but est de récupérer l'archive zip (contenu dans le Blob), décompresser cette archive (opération faite à l'aide de la libraire SharpZipLib)
    récupérer les images et les ajouter dans un container sur mon Cloud Storage (donc en tant que Blob pour chaque image)


    Ce qui m’ennuie, c'est le passage décompression à partir du blob pour revenir une liste de fichiers.
    Je passe par un LocalStorage que j'ai déclaré dans ma définition de service mais je ne sais pas si c'est une bonne idée.

    Dois t-on procéder comme cela normalement ? dans une optique de performance... et de limiter le coût de l'opération

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    CloudQueueMessage msg = queue.GetMessage();
    if ( msg != null ) {
        string path = msg.AsString;
     
        // Récupére l'archive en local
        CloudBlob blobArchive = containerTemp.GetBlobReference( path );
        LocalResource sto = RoleEnvironment.GetLocalResource( "LocalStorageTemp" );
        string archiveFileName = Path.Combine( sto.RootPath, "archive.zip" );
        blobArchive.DownloadToFile( archiveFileName );
     
        // Extraction de l'archive sur le LocalStorage et récupération de la liste de tout les fichiers images
        ExtractArchive( archiveFileName, sto.RootPath );
        string[] tabImageFile = Directory.GetFiles( sto.RootPath, "*.jpg", SearchOption.AllDirectories );
        File.Delete( archiveFileName );
     
        // Parcours de toutes les images pour ajout dans le Cloud Storage
        foreach ( string imageFile in tabImageFile ) {
            string fileName = Path.GetFileName( imageFile );
            CloudBlob blobFullSize = containerPhotos.GetBlobReference( fileName );
     
            // Download the image
            FileStream image = File.OpenRead( imageFile );
            image.Seek( 0, SeekOrigin.Begin );
     
            // upload original image and thumbnail image
            blobFullSize.UploadFromStream( image );
            blobFullSize.Properties.ContentType = "image/jpeg";
            blobFullSize.SetProperties();
     
            // remove image file
            File.Delete( imageFile );
        }
     
        // Delete the message on the queue, and the temp blob
        queue.DeleteMessage( msg );
        blobArchive.Delete();
     
        Trace.WriteLine( path + " has been processed" );
    }

  2. #2
    Nouveau membre du Club
    Profil pro
    MVP Windows Azure, Soat Expert Azure
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : MVP Windows Azure, Soat Expert Azure

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut
    Bonjour,

    Alors pour ma part, j'aurais fait comme toi pour gérer ce cas.

    Après si tu veux limiter le cout de l'opération, il est possible de supprimer le Worker Role afin de ne te laisser que le Web Role activé et de fait de faire le traitement de ton archive via une tâche périodique que tu auras défini dans ton application.

    Ensuite dans une optique de performance, tu peux aussi parralélliser le traitement de ton message, comme par exemple un upload avec PLinq. Et je ne serais que trop de conseiller de mettre en place une RetryPolicy pour l'upload dans les blobs, il n'est pas rare d'avoir des erreurs.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2014, 13h51
  2. sh : Problème de récupération fichiers ZIP via FTP
    Par benthebest dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 24/11/2014, 17h56
  3. Réponses: 1
    Dernier message: 01/09/2013, 12h52
  4. [Débutant] Transfert de fichiers zip via WCF
    Par antoine2641 dans le forum Services Web
    Réponses: 1
    Dernier message: 07/08/2013, 15h19
  5. Décompression fichier ZIP
    Par Mangaku dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 22/08/2011, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo