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

VB.NET Discussion :

erreur "illegal characters in path" quand j`insère un enregistrement


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut erreur "illegal characters in path" quand j`insère un enregistrement
    Salut à tous
    j`avais rencontré depuis longtemps un problème qui m`a vraiment traumatisé lorsque je désire copier une image uploader par l`utilisateur vers un dossier, le drole c`est que parfois l`opération se termine nikel avec succés mais parfois m`arrive l`erreur suivante:
    illegal characters in path
    alors la premiere chose que je fesais c`est d`essayer de cerner l`erreur par élimination lorsque j`arrivais à me douter sur la ligne suivante de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.IO.File.Copy(imageToCopy, newImage)
    je vous fournis mon code esperant que vous m`aider à trouver une solution et merci d`avance
    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
    'declarattion des 2 path pour le transfert de l`image
                Dim imageToCopy As String
                Dim newImage As String
                'declaration des 2 path pour le transfert de l`audio
                Dim audioToCopy As String
                Dim newAudio As String
                'initialisation des 2 path pour le transfert de l`image
                imageToCopy = TextBox1.Text
                nomImage = nomImage + extensionImageFile.ToString
                newImage = "D:/code_de_la_route/images/" + nomImage.ToString
                'initialisation des 2 path pour le transfert de l'audio
                audioToCopy = TextBox2.Text
                nomAudio = nomAudio + extensionAudioFile.ToString
                newAudio = "D:/code_de_la_route/audios/" + nomAudio.ToString
     
                Try
                    'enregistrer l`image dans le dossier correspondant
                    System.IO.File.Copy(imageToCopy, newImage)'j`ai doute que l`erreur vient d`ici
                    'enregistrer l`audio dans le dossier correspondant
                    System.IO.File.Copy(audioToCopy, newAudio)
                    'preparer les requetes
                    Dim sqlQRY1 As String = "INSERT INTO AUDIO  Values ('" + nomAudio + "')"
                    Dim sqlQRY2 As String = "INSERT INTO [IMAGE] Values ('" + nomImage + "')"
                    Dim sqlQRY3 As String = "INSERT INTO [TEST](Int_Exa,Rep_Correctes,Nom_Aud,Nom_Img)  Values ('" + nomExamen + "','" + repTest + "','" + nomAudio + "','" + nomImage + "')"
                    'ouvrir la connexion
                    myConnexion.Open()
                    'MsgBox(nomImage)
                    'creation des commandes
                    Dim cmd1 As OleDbCommand = New OleDbCommand(sqlQRY1, myConnexion)
                    Dim cmd2 As OleDbCommand = New OleDbCommand(sqlQRY2, myConnexion)
                    Dim cmd3 As OleDbCommand = New OleDbCommand(sqlQRY3, myConnexion)
                    'exécution des requetes
                    cmd1.ExecuteNonQuery()
                    cmd2.ExecuteNonQuery()
                    cmd3.ExecuteNonQuery()
     
                    MsgBox("Test ajouté avec succés.", MsgBoxStyle.Information)
     
                    'fermer la connexion
                    myConnexion.Close()
                    TextBox1.Text = ""
                    TextBox2.Text = ""
                    CheckBox1.Checked = False
                    CheckBox2.Checked = False
                    CheckBox3.Checked = False
                    CheckBox4.Checked = False
                    PictureBox1.Image = Nothing
                    PictureBox1.BackgroundImage = Nothing
                    nbTest = nbTest - 1
                Catch ex As Exception
                    MsgBox("Operation suspendue, merci de cliquer de nouveau sur le bouton 'Enregistrer le Test' !!")
                Finally
                    myConnexion.Close()
                End Try
    j`ai pas mis tout le code mais il faut admettre que toutes les variables sont déclarés pas de probleme.
    pour le message dans le catch je l`avais mis provisoirement pour ne pas montrer l`erreur à l`utilisateur mais c`est pas honnete quoi non?

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Code :
    illegal characters in path
    Ca, ca veut surement dire que ton path ("D:/code_de_la_route/images/" + nomImage.ToString), contient un caractère interdit.

    genre : ' # ] etc....

    Comment se nomme tes fichiers nomImage ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    salut, la variable nomImage va recevoir le retour d`une fonction dédiée qui a pour but de former un nom suite a des calculs aleatoires combinés lettres et chiffres seulement c`est a dire que le retour est genre:
    2G8W1F3K4M8W
    j`ai vérifié que ca contient pas de caracteres interdits
    j`arrive pas encore a me debrouiller je compte sur votre savoir

  4. #4
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Essaye de faire ça @"C:\example\example"
    Sinon met un point d'arrêt et donne nous un exemple de path qu'il considère comme illegal

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    d'accord avec Jerede, déjà remplacer les slash par des antislach (séparateur "officiel" de fichiers sous Windows).
    Ensuite vérifier qu'il n'y a pas d'espaces blancs , ce qui parfois peut aussi poser problème.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    Salut, voila l`interface de mon formulaire, sur ce formulaire l`utilisateur va configurer un examen qui est ensemble de test, chaque test est composé d`une image, d`un audio et d`un ensemble de reponses justes.
    Nom : devForum.jpg
Affichages : 154
Taille : 32,5 Ko
    lorsque l`utilisateur clique sur le bouton "Enregistrer le test" le code suivant va s`executer:
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     Private Sub enregistrer_test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles enregistrer_test.Click
            'les reponses justes du test
            Dim repTest As String = ""
            'récuperer l`ensemble des réponses
            If CheckBox1.Checked = True Then
                repTest = repTest + "A "
            End If
            If CheckBox2.Checked = True Then
                repTest = repTest + "B "
            End If
            If CheckBox3.Checked = True Then
                repTest = repTest + "C "
            End If
            If CheckBox4.Checked = True Then
                repTest = repTest + "D"
            End If
            If TextBox1.Text.Length = 0 Then
                MsgBox("veuillez sélectionner une image")
            ElseIf repTest.Length = 0 Then
                MsgBox("veuillez cocher les réponses que vous jugez justes pour le test")
            ElseIf TextBox2.Text.Length = 0 Then
                MsgBox("veuillez sélectionner une audio")
            Else 'les tests ne sont pas terminés
     
                nomImage = calculerNom()
                'OpenFileDialog1.FileName = nomImage
                nomAudio = calculerNom()
                'declarattion des 2 path pour le transfert de l`image
                Dim imageToCopy As String
                Dim newImage As String
                'declaration des 2 path pour le transfert de l`audio
                Dim audioToCopy As String
                Dim newAudio As String
                'initialisation des 2 path pour le transfert de l`image
                imageToCopy = TextBox1.Text
                nomImage = nomImage + extensionImageFile.ToString
     
                nomImage = Trim(nomImage)
                newImage = "D:\code_de_la_route\images\" + nomImage.ToString
                'initialisation des 2 path pour le transfert de l'audio
                audioToCopy = TextBox2.Text
                nomAudio = nomAudio + extensionAudioFile.ToString
                nomAudio = Trim(nomAudio)
                newAudio = "D:\code_de_la_route\audios\" + nomAudio.ToString
     
                Try
                    'enregistrer l`image dans le dossier correspondant
                    System.IO.File.Copy(imageToCopy, newImage)
                    'enregistrer l`audio dans le dossier correspondant
                    System.IO.File.Copy(audioToCopy, newAudio)
                    'preparer les requetes
                    Dim sqlQRY1 As String = "INSERT INTO AUDIO  Values ('" + nomAudio + "')"
                    Dim sqlQRY2 As String = "INSERT INTO [IMAGE] Values ('" + nomImage + "')"
                    Dim sqlQRY3 As String = "INSERT INTO [TEST](Int_Exa,Rep_Correctes,Nom_Aud,Nom_Img)  Values ('" + nomExamen + "','" + repTest + "','" + nomAudio + "','" + nomImage + "')"
                    'ouvrir la connexion
                    myConnexion.Open()
                    'MsgBox(nomImage)
                    'creation des commandes
                    Dim cmd1 As OleDbCommand = New OleDbCommand(sqlQRY1, myConnexion)
                    Dim cmd2 As OleDbCommand = New OleDbCommand(sqlQRY2, myConnexion)
                    Dim cmd3 As OleDbCommand = New OleDbCommand(sqlQRY3, myConnexion)
                    'exécution des requetes
                    cmd1.ExecuteNonQuery()
                    cmd2.ExecuteNonQuery()
                    cmd3.ExecuteNonQuery()
     
                    MsgBox("Test ajouté avec succés.", MsgBoxStyle.Information)
                    extensionImageFile = Nothing
                    'fermer la connexion
                    myConnexion.Close()
                    TextBox1.Text = ""
                    TextBox2.Text = ""
                    CheckBox1.Checked = False
                    CheckBox2.Checked = False
                    CheckBox3.Checked = False
                    CheckBox4.Checked = False
                    PictureBox1.Image = Nothing
                    PictureBox1.BackgroundImage = Nothing
                    nbTest = nbTest - 1
                Catch ex As Exception
                    MsgBox("Operation suspendue, merci de cliquer de nouveau sur le bouton 'Enregistrer le Test' !!")
                    MsgBox(nomImage)
                    MsgBox(nomImage.Length)
                Finally
                    myConnexion.Close()
                End Try
                'tester s'il reste encore des tests a configurer
                If nbTest > 0 Then
                    Label7.Text = nbTest.ToString + " tests restants"
                Else
                    'si les tests sont terminés
                    'on quitte
                    Me.Hide()
                    MenuForm.Show()
                    MenuForm.TopMost = True
                End If
            End If
     
        End Sub
    dans le catch, j`ai essayé de fqire un msgbox(nomImage), alors le drole que lorsqu`il ya erreur, nomImage ne contenait que le nom alors que lorsque tout se passe bien je trouve que la variable nomImage contenait le nom et l`extension (sachant que cette derniere je l`avais extrait dans une autre procedure)
    voila, si vous désirez d`autres informations n`hesitez surtout pas à me les demander, je vous remercie a l`avance

Discussions similaires

  1. Parser Error Message: Illegal characters in path.
    Par maeva87 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/03/2015, 14h55
  2. URISyntaxException: Illegal character in path
    Par daydream123 dans le forum Général Java
    Réponses: 4
    Dernier message: 04/02/2015, 13h42
  3. Illegal character in path at index 'x'
    Par HozakaN dans le forum JPA
    Réponses: 4
    Dernier message: 06/07/2009, 09h18
  4. Réponses: 5
    Dernier message: 07/08/2008, 15h38

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