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

ASP.NET Discussion :

Taille d un fichier uploadé


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 76
    Points
    76
    Par défaut Taille d un fichier uploadé
    Bonsoir tout le monde,

    Je soumets à vos avis éclairés une question technique :

    Je dois uploader un fichier sur un serveur distant ( IIS ) dans un répértoire temporaire.

    Par la suite, je transfére ce fichier vers un fichier définitif.

    J'aimerai créer un thread qui copiera ce fichier du répértoire temporaire au répértoire définitif à condition qu'il soit complétement chargé.

    Et je bloque sur ce point.

    Je pensais faire boucler mon thread, tester la taille a chaque tour, si la taille ne change pas entre deux ou trois boucles, on copie.

    Y a t il d'autres solutions ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par BATCHOS CON TEQUILA Voir le message
    Y a t il d'autres solutions ?
    Tu peux aussi vérifier si le fichier est ouvert, en essayant de l'ouvrir en mode exclusif :
    Code : 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
     
    FileStream fs = null;
    try
    {
        fs = new FileStream("leFichier.txt", FileMode.Open, FileAccess.Read, FileShare.None);
        // si pas d'erreur, le fichier n'était pas ouvert, donc le transfert est sans doute fini
    }
    catch(IOException)
    {
            // erreur : le fichier était déjà ouvert, donc le transfert est sans doute encore en cours
    }
    finally
    {
        if (fs != null)
            fs.Close();
    }

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 76
    Points
    76
    Par défaut
    Merci

    Ca me semble beaucoup plus simple et plus efficace que ma méthode.

    Bonne soirée

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 76
    Points
    76
    Par défaut
    En fait, j'ai une autre question.

    Est ce que je peux faire un truc du style ? :


    FileStream fs = null;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHILE(fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None));
    Comment en somme intércepter l exception dans un while ?

    Merci d'avance

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par BATCHOS CON TEQUILA Voir le message
    Comment en somme intércepter l exception dans un while ?
    Ben en mettant le try/catch dans le while...
    Code : 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
     
    while(true)
    {
        FileStream fs = null;
        try
        {
            fs = new FileStream("leFichier.txt", FileMode.Open, FileAccess.Read, FileShare.None);
            // si pas d'erreur, le fichier n'était pas ouvert, donc le transfert est sans doute fini
            // on sort de la boucle
            break;
        }
        catch(IOException)
        {
            // erreur : le fichier était déjà ouvert, donc le transfert est sans doute encore en cours
            // on continue à boucler
        }
        finally
        {
            if (fs != null)
                fs.Close();
        }
    }

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 76
    Points
    76
    Par défaut
    Et bien écoute, magnifique.

    Il me manquait le while (true)... Je n'y aurai jamais pensé

    Merci encore

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Par contre fait gaffe, parce que l'exception IOException ne correspond pas forcément au cas où le fichier est déjà ouvert. En particulier, si le fichier n'existe pas, ça lèvera une FileNotFoundException, mais comme FileNotFoundException hérite de IOException, l'exception sera aussi interceptée par le bloc catch(IOException)... Et dans ce cas, tu vas boucler indéfiniment, alors qu'il faudrait abandonner...

    Donc pour être tranquille il vaudrait mieux gérer toutes les exceptions qui peuvent être levées par le constructeur de FileStream, et il y en a une flopée...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Taille d'un fichier uploadé
    Par Lordsephiroth dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2010, 09h34
  2. [WB1] Vérifier la taille d'un fichier uploadé
    Par basam95 dans le forum WebDev
    Réponses: 2
    Dernier message: 10/06/2008, 10h17
  3. [CKEditor] taille maximale des fichiers uploadés
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 03/12/2006, 12h38
  4. [WebForms]Comment connaître la taille d'un fichier à uploader ?
    Par WELCOMSMAIL dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 02/05/2006, 16h27
  5. [Upload] taille d'un fichier et limite d'upload
    Par fraizas dans le forum Langage
    Réponses: 1
    Dernier message: 07/10/2005, 12h01

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