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 :

Libération d'un fichier aprés Upload


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Libération d'un fichier aprés Upload
    Salut

    J'ai mis en place un FileUpload pour charger des photos pour les membres de mon site.
    Je m'aperçois, en dévelopant le module de désinscription, que les fichiers ne sont pas libérer aprés traitement mais je n'arrive pas àtrouver de fonction ou de paramettre pour lui indiquer qu'une fois qu'il à fini de transférer sur le serveur il doit laisser le fichier tranquille.

    Vous remarquerez dans le code que je fait un truc pour faire une petite thumb de la photo chargée et je crois que c'est ce traitement là qui bloque le fichier.

    Dans le bloc de code suivant je fais la suppression des photos dans mo module de désinscription et c'est lui qiu me dit que le fichier est utilisé

    Donc, j'ai fini par comprendre que le fichier restait coincé le temps du TimeOut de session, soit 20 minutes par défaut.
    Pouvez vous m'aider pour faire en sorte que le fichier soit libéré plus vite.

    Chargement des photos

    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
    23
    24
    25
    26
    27
    28
    29
     
        Protected Sub btnFileUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFileUpload.Click
            If fileUp.HasFile Then
                If fileUp.PostedFile.ContentType = "image/pjpeg" Then
                    If fileUp.PostedFile.ContentLength < 150000 Then
                        Try
                            With fileUp
                                .SaveAs(NomCheminPhoto)
                            End With
                            lblErrFileUpload.Text = "Photo arrivée dans votre profil"
     
                        Catch ex As Exception
                            lblErrFileUpload.Text = "ERREUR: " & ex.Message.ToString()
                        End Try
                    Else
                        lblErrFileUpload.Text = "Fichier trop lourd"
                    End If
                Else
                    lblErrFileUpload.Text = "Seules les fichiers JPG sont autorisées"
                End If
            Else
                lblErrFileUpload.Text = "Vous devez indiquer un fichier"
            End If
     
            Dim fullSizeImg As System.Drawing.Image = System.Drawing.Image.FromFile(NomCheminPhoto)
            Dim dCallBack As New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
            fullSizeImg.GetThumbnailImage(100, 75, dCallBack, IntPtr.Zero).Save(Replace(NomCheminPhoto, "ph1.jpg", "ph1t.jpg"))
            AffichePhoto()
        End Sub
    Suppression des photos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            For i As Int16 = 1 To 5
                Dim NomCheminPhoto As String = Server.MapPath("/App_Themes/" & GetParamSite("Nomsite") & "/PhotoMembre/" & GetUserGUID().ToString & "ph" & i & ".jpg")
                If File.Exists(NomCheminPhoto) Then
                    File.Delete(NomCheminPhoto)
                    File.Delete(Replace(NomCheminPhoto, "ph" & i & ".jpg", "ph" & i & "t.jpg"))
                End If
            Next

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    fullSizeImg.Dispose() je dirais

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Donc je mets ça juste aprés le AffichePhoto()

    J'ai toujours du mal avec le Dispose, je comprend pas bien comment ça marche. A chaque fois que j'ai voulu l'utilisé j'ai pris un paquet de truc dans la tronche et j'avoue que je ne comprends pas trés bien ce concept, malgré pas mal de lecture sur le sujet.

    Bon, j'essaie aprés manger et je te dit.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Si je ne raconte pas de conneries (ce qui est somme toute très possible), la méthode Dispose ne fait qu'avertir le Garbage Collector que l'objet en question peut être libéré.
    Il ne s'agit donc pas d'une libération immédiate de l'objet mais d'une info transmise au GC.

    Me trompe-je ?

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    hey Salut Calagan99, longtemps que je ne t'avais vu trainer sur mes topics.
    Ton nouveau job, c'est comment ?

    Sinon, info ou pas, ça marche bien.

    Parce que, en plus, je me suis aperçu que c'est même pas la session qui libère, c'est l'extinction de la machine. Là, soit 4 heures aprés, le fichier était toujours pris par un processus. Même à la main je ne pouvais pas le supprimer.

    Et là, en rajoutant le Dispose(), ben cool, le fichier est libéré, il se laisse supprimer en douceur, un peu comme une jolie blonde se laisse embarquer dans la BMW qui fait beaucoup de bruit..........................


    Merci les gars.

    Kenavo

    PS : Vincent, la suite par mail privé

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Et ???

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ben je croyais bien avoir clické dessus.

    Désolé, je recommencerais pas.



    Heu et puis tu vas le prendre sur un autre ton, hein, franchement

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Je dérésolu ce topic car le Dispose() ne donne pas satisfaction.

    Alors soit c'est pas le bon truc, soit c'est un souci de gestion des droits sur ma bécanne. L'ennui c'est que je n'ai pas la possibilité de tester cela sur un serveur.

    Avez vous une autre idée en tête ?

  9. #9
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Une erreur générique s'est produite dans GDI+.
    J'ai un petit peu d'info là dessus, mais je sèche un peu sévère :

    J'ai un message d'erreur qui dit :
    Une erreur générique s'est produite dans GDI+.
    Voici le code qui gère l'upload de l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    fullSizeImg = System.Drawing.Image.FromFile(NomCheminPhoto)
    Dim dCallBack As New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback)
    fullSizeImg.GetThumbnailImage(100, 75, dCallBack, IntPtr.Zero).Save(Replace(NomCheminPhoto, extNum, extNumt))
    AffichePhoto()
    fullSizeImg.Dispose()
    fullSizeImg = Nothing
    et il bloque sur la ligne du GetThumbnailImage
    Et en plus, en mode debug, il ne gère pas du tout mon point d'arrêt que j'ai mis deux lignes au dessus.

    Une idée ?

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, visiblement, le Nothing à l'air de porté ses fruits.

    Mais ça reste hyper sensibl car si le transfert subit une erreur avant ça fin complète, le fichier reste attaché au processus. J'espère que j'ai géré tous les cas.

    @+

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Bon, visiblement, le Nothing à l'air de porté ses fruits.

    Mais ça reste hyper sensibl car si le transfert subit une erreur avant ça fin complète, le fichier reste attaché au processus. J'espère que j'ai géré tous les cas.

    @+
    Try Catch Finally, c'est juste pour faire joli?

  12. #12
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Non je m'en sers, mais j'avoue ne pas avoir mis en place le Finally.

    Donc, histoire de pas me planter, dans le Finally je place un Dispose et un Nothing, histoire d'être bien bordé ?

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Non je m'en sers, mais j'avoue ne pas avoir mis en place le Finally.

    Donc, histoire de pas me planter, dans le Finally je place un Dispose et un Nothing, histoire d'être bien bordé ?
    Ouais, et juste dans le Finally

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

Discussions similaires

  1. Problème fichier après upload
    Par Madfrix dans le forum Langage
    Réponses: 3
    Dernier message: 11/02/2011, 11h57
  2. Supprimer un fichier après upload
    Par campanophile dans le forum Langage
    Réponses: 6
    Dernier message: 18/03/2010, 08h53
  3. Problème de lecture d'un fichier après upload
    Par sissi25 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2009, 11h51
  4. Réponses: 5
    Dernier message: 21/06/2008, 18h41
  5. [Upload] Mauvais nom de fichier apres upload
    Par chambiges dans le forum Langage
    Réponses: 2
    Dernier message: 29/07/2007, 21h28

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