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 :

Upload d'image : erreur en distant


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut Upload d'image : erreur en distant
    Bonjour bonjour !

    Alors voila. J'ai une super fonction (en fait deux) qui me permettent d'uploader une image sur le serveur et de la redimmensionner. Le seul souci, c'est que ça fonctionne très bien en local, mais en distant c'est niet.

    Voici la fonction appelée en première :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     Public Function UploadAvatar() As Boolean
     
            If IsPostBack Then
     
                Dim path As String = Server.MapPath("~/UpImages/")
                Dim fileOK As Boolean = False
                If UploadPhoto.HasFile Then
                    Dim fileExtension As String
                    fileExtension = System.IO.Path.GetExtension(UploadPhoto.FileName).ToLower()
                    Dim allowedExtensions As String() = {".jpg", ".jpeg"}
                    For i As Integer = 0 To allowedExtensions.Length - 1
                        If fileExtension = allowedExtensions(i) Then
                            fileOK = True
                        End If
                    Next
     
                    If fileOK Then
                        Try
                            Dim oImage As System.Drawing.Image = Nothing
                            If File.Exists(path & "139.jpg") Then
                                File.Delete(path & "139.jpg")
                            ElseIf File.Exists(path & "139.jpeg") Then
                                File.Delete(path & "139.jpeg")
                            End If
                            Dim image As String = ""
                            If System.IO.Path.GetExtension(UploadPhoto.FileName).ToLower() = ".jpg" Then
                                UploadPhoto.PostedFile.SaveAs(path & _
                                     "139.jpg")
                                oImage = System.Drawing.Image.FromFile(path & "139.jpg")
                                image = "139.jpg"
                            ElseIf System.IO.Path.GetExtension(UploadPhoto.FileName).ToLower() = ".jpeg" Then
                                UploadPhoto.PostedFile.SaveAs(path & _
                                     "139.jpeg")
                                image = "139.jpeg"
                                oImage = System.Drawing.Image.FromFile(path & "139.jpeg")
                            Else
                                Dim ex As New Exception("Format non supporté, choisissez une autre photo.")
                                Throw ex
                            End If
                            PhotoEnregistreRetaille(oImage, System.IO.Path.GetExtension(UploadPhoto.FileName).ToLower(), image, 240, 200) 'Appel de la deuxième fonction
                            LblErreur.Text = "Image téléchargée !<br />Votre image sera redimensionnée si ses dimensions sont supérieurs à 240 X 200 pixels.<br />"
                            Return False
                        Catch ex As Exception
                            If ex.Message = "Format non supporté, choisissez une autre photo." Then
                                LblErreur.Text = ex.Message
                            Else
                                LblErreur.Text = "Ce fichier ne peut pas être téléchargé." 'C'est ce message d'erreur qui est affiché, donc c'est une exception qui est lancée.
                            End If
     
                            Return True
                        End Try
                    Else
                        LblErreur.Text = "Ce fichier ne peut pas être téléchargé."
                        Return True
                    End If
                End If
            End If
     
        End Function
    Et voici la fonction qui permet de retailler l'image, appelée par la fonction précédente :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Function PhotoEnregistreRetaille(ByVal oImageSource As System.Drawing.Image, ByVal Format As String, ByVal filename As String, ByVal LargeurMaxi As Integer, ByVal hauteurMaxi As Integer) As Boolean
     
            Dim HauteurImage, LargeurImage As Integer
            Dim propor As Double
            If oImageSource.Width > LargeurMaxi Then
                propor = oImageSource.Width / oImageSource.Height
                LargeurImage = LargeurMaxi
                HauteurImage = LargeurImage / propor
                If HauteurImage > hauteurMaxi Then
                    HauteurImage = hauteurMaxi
                    LargeurImage = HauteurImage * propor
                End If
                Try
                    Dim oImageCible As System.Drawing.Bitmap = New System.Drawing.Bitmap(LargeurImage, HauteurImage, oImageSource.PixelFormat)
                    Dim oGraphique As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(oImageCible)
                    oGraphique.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
                    oGraphique.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
                    oGraphique.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
                    oGraphique.DrawImage(oImageSource, 0, 0, oImageCible.Width, oImageCible.Height)
                    oGraphique.Dispose()
                    Dim ImgFormat As System.Drawing.Imaging.ImageFormat
                    Select Case Format
                        Case ".jpg"
                            ImgFormat = System.Drawing.Imaging.ImageFormat.Jpeg
                        Case ".jpeg"
                            ImgFormat = System.Drawing.Imaging.ImageFormat.Jpeg
                        Case Else
                            ImgFormat = System.Drawing.Imaging.ImageFormat.Jpeg
                    End Select
                    oImageSource.Dispose()
                    Dim path As String = Server.MapPath("~/UpImages/")
                    File.Delete(path & filename)
                    oImageCible.Save(path & filename, ImgFormat)
                    Return True
                Catch exThread As Threading.ThreadAbortException
                    Throw exThread
                Catch ex As Exception
                    Return False
                End Try
            Else
                Return True
            End If
        End Function
    Si quelqu'un pouvait m'aider, ça serait génial. Ca fait déjà quelques heures que je suis dessus et toujours rien...

    Merci d'avance !

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Et c'est quoi le problème???

  3. #3
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Et c'est quoi le problème???

    C'est un challenge... on doit essayer de le trouve :-)

    Je pense que c'est un problème de droits qu'il doit avoir...

  4. #4
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    ça fonctionne très bien en local, mais en distant c'est niet.
    Voila le souci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LblErreur.Text = "Ce fichier ne peut pas être téléchargé." 'C'est ce message d'erreur qui est affiché, donc c'est une exception qui est lancée.
    Et voici ce que ça fait.

    Je vois que la lecture des problèmes se fait rapidement...

    Bon, en tout cas, bossun a raison. Après avoir virer le try catch, c'est un problème de droits d'accès.

    Donc la question change :
    A qui mettre les droits sur le répertoire sachant que dans le web config j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <authentication mode="Windows"/>
    		<identity impersonate="true"/>
    ASP.NET possède t'il un compte pour lequel on peut lui accorder des droits ?
    merci d'avance.

  5. #5
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    tu as beau à mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <authentication mode="Windows"/>
    		<identity impersonate="true"/>

    si les utilsiateurs n'ont pas les droits, ça ne marchera pas quand meme.


    SI tu es dans un environnement Intranet, Active Directory, tu dois enlever l'authentification annonyme de sur ton server IIS. si tu ne le fais pas, il va utiliser ASPNET pour se connecter et ASPNET est un compte très limité..

  6. #6
    Membre confirmé Avatar de Azephel
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Je suis en extranet et donc je n'utilise pas l'AD. Nous avons donné le controle total à l'utilisateur IUSR/machine (je sais pas le nom exact, et notre admin réseau est sur un autre truc plus urgent). Je ne sais pas trop quoi faire au niveau des droits, c'est vraiment pas mon fort...

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

Discussions similaires

  1. [eZ Publish 4] Erreur d'upload d'image
    Par sboyer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 16/06/2010, 16h25
  2. Réponses: 2
    Dernier message: 09/11/2008, 13h14
  3. Réponses: 1
    Dernier message: 22/07/2008, 20h12
  4. Erreur variable pour formulaire d'upload d'image
    Par DjChat dans le forum Langage
    Réponses: 5
    Dernier message: 28/05/2008, 12h12
  5. Réponses: 8
    Dernier message: 15/10/2006, 18h45

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