begin process at 2012 05 27 06:07:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > CHAINES DE CARACTÈRES - UPLOAD

CHAINES DE CARACTÈRES - UPLOAD


 Information sur la source

 Description

Ce code peut servir de complément au projet de fabrice69 "FabManager" pour y intéger l'upload. De nombreux exemples sur l'upload de fichier existent mais très peu pensent à préciser le besoin fréquent de manipuler le nom des fichiers uploadés par un utilisateur.

Dans mon cas mes utilisateurs n'hésitent pas à uploader des fichiers dont le nom ressemble plus à une phrase qu'un nom de fichier, lorsque l'on tombe pas dans le délire du roman en guise de nom de fichier, sisi çà existe !

Voici donc quelques classes concernant l'épuration de certains caractères et le remplacement des caractère à accents, ces derniers posent souvent problèmes lors du téléchargement, cf FabManager http://www.aspfr.com/code.aspx?ID=23262)

Source

  • 'Fichier ManipFile.vb
  • '-------------------------------------------------------------------------------------------------------------------------------------
  • Imports System
  • Imports System.IO
  • Imports System.Text
  • Imports System.Text.RegularExpressions
  • Public Class ManipFile
  • '--------------------------------------------------------------------------------------------
  • ' Nettoyage des chaines de caractères
  • '--------------------------------------------------------------------------------------------
  • ' Vire les accents
  • Public Shared Function noaccent(ByVal txt)
  • Dim strTemp As String = txt
  • ' création des objet Regex
  • Dim regE As New Regex("(é|è|ê|ë)")
  • Dim regA As New Regex("(à|â|ä)")
  • Dim regC As New Regex("(ç)")
  • Dim regU As New Regex("(ù)")
  • 'Remplace les caractères indésirables par leur équivalent
  • strTemp = regE.Replace(strTemp, "e", 1)
  • strTemp = regA.Replace(strTemp, "a", 1)
  • strTemp = regC.Replace(strTemp, "c", 1)
  • strTemp = regU.Replace(strTemp, "u", 1)
  • noaccent = strTemp
  • End Function
  • 'Vire tous les caractères indésirables,
  • 'et remplace les accents par leur équivalent sans accent
  • Public Shared Function nochar(ByVal strTxt As String) As String
  • ' Moi ces caractères j'en veux pas dans le nom d'un fichier, à vous de faire le trie
  • Dim ListDelChar As String = " ²&~#'{([-|`\^@)]°+=}<>,?;/:!§%*µ$£¤"
  • Dim DelChar As String
  • Dim i As Integer
  • For i = 1 To Len(ListDelChar)
  • DelChar = ListDelChar.Chars(i - 1)
  • strTxt = Replace(strTxt, DelChar, String.Empty)
  • Next
  • nochar = noaccent(strTxt)
  • Return nochar
  • End Function
  • 'Permet d'avoir uniquement le nom du fichier à partir de son path
  • Shared Function IsoleFile(ByVal path As String) As String
  • Dim sSplit() As String
  • sSplit = Split(path, "\")
  • path = sSplit(UBound(sSplit))
  • IsoleFile = path
  • End Function
  • ' Vire les \ et les renplace par des /
  • 'Pour passer d'un path à une url par exemple
  • Public Shared Function noantislash(ByVal txt)
  • Dim strTemp As String = txt
  • 'Remplace le caractères indésirable
  • strTemp = Replace(strTemp, "\", "/")
  • noantislash = strTemp
  • End Function
  • 'Upload
  • Shared Function Upload( ByVal sFile As String, ByVal sFullPath As String, ByVal txtUpload As System.Web.UI.HtmlControls.HtmlInputFile) As String
  • Try
  • 'Ecriture sur server, nécessite droits ntfs sur compte asp.net
  • txtUpload.PostedFile.SaveAs(sFullPath)
  • 'Infos comme quoi çà c'est bien passé
  • Upload = "Ok"
  • Catch Ex As Exception
  • Upload = "Envoie du fichier " & sFile & " vers le serveur n'a pas réussi pour la raison suivante : " & Ex.Message
  • Finally
  • End Try
  • End Function
  • End Class
  • '-------------------------------------------------------------------------------------------------------------------------------------
  • 'Fichier upload.aspx
  • '-------------------------------------------------------------------------------------------------------------------------------------
  • <%@ Page Language="vb" AutoEventWireup="false" Codebehind="upload.aspx.vb" Inherits="votreappli.upload"%>
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  • <HTML>
  • <HEAD>
  • <title>Votre application</title>
  • </HEAD>
  • <body>
  • <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
  • <TABLE class="ridge" cellSpacing="0" width="100%">
  • <TR>
  • <TD width="30%" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>
  • <FONT color="#ffffcc" size="2">Importation de Fichier</FONT></STRONG>
  • </TD>
  • <TD align="left" width="70%" colSpan="2" rowSpan="1"></TD>
  • </TR>
  • <TR>
  • <TD width="15%">&nbsp;</TD>
  • <TD width="85%">&nbsp;</TD>
  • </TR>
  • <TR>
  • <TD width="15%">&nbsp;&nbsp;&nbsp;&nbsp; Fichier</TD>
  • <TD width="85%">
  • <INPUT id="txtUpload" type="file" name="txtUpload" runat="server">&nbsp;&nbsp;
  • </TD>
  • </TR>
  • <TR>
  • <TD width="15%">&nbsp;</TD>
  • <TD width="85%">&nbsp;</TD>
  • </TR>
  • </TABLE>
  • <br>
  • <asp:ImageButton id="BtnUpload" runat="server" ImageUrl="../img/GValider.gif" ToolTip="Enregistrer"></asp:ImageButton>
  • </form>
  • </body>
  • </HTML>
  • 'Fichier upload.aspx.vb
  • '-------------------------------------------------------------------------------------------------------------------------------------
  • Imports System.Web
  • Public Class upload
  • Inherits System.Web.UI.Page
  • Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • End Sub
  • 'Valide l'Upload
  • Private Sub BtnUpload_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles BtnUpload.Click
  • If txtUpload.PostedFile.FileName <> String.Empty Then
  • 'Instanciation de la class
  • Dim manip As New ManipFile
  • 'Initialisation des variables
  • Dim sFullDir As String = "E:\VotreREP\VotreSSRep
  • Dim sFile As String = manip.nochar(manip.IsoleFile(txtUpload.PostedFile.FileName))
  • Dim sFullPATH As String = sFullDir & "\" & sFile
  • 'Upload
  • manip.Upload(sFile, sFullPATH, txtUpload)
  • 'Réinitialisation des textbox
  • sFullPATH = String.Empty
  • sFullURL = String.Empty
  • End If
  • End Sub
  • End Class
'Fichier ManipFile.vb
'-------------------------------------------------------------------------------------------------------------------------------------

Imports System
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions

Public Class ManipFile

    '--------------------------------------------------------------------------------------------
    ' Nettoyage des chaines de caractères
    '--------------------------------------------------------------------------------------------

    ' Vire les accents
    Public Shared Function noaccent(ByVal txt)

        Dim strTemp As String = txt

        ' création des objet Regex
        Dim regE As New Regex("(é|è|ê|ë)")
        Dim regA As New Regex("(à|â|ä)")
        Dim regC As New Regex("(ç)")
        Dim regU As New Regex("(ù)")

        'Remplace les caractères indésirables par leur équivalent
        strTemp = regE.Replace(strTemp, "e", 1)
        strTemp = regA.Replace(strTemp, "a", 1)
        strTemp = regC.Replace(strTemp, "c", 1)
        strTemp = regU.Replace(strTemp, "u", 1)

        noaccent = strTemp

    End Function

    'Vire tous les caractères indésirables,
    'et remplace les accents par leur équivalent sans accent
    Public Shared Function nochar(ByVal strTxt As String) As String

        ' Moi ces caractères j'en veux pas dans le nom d'un fichier, à vous de faire le trie
        Dim ListDelChar As String = " ²&~#'{([-|`\^@)]°+=}<>,?;/:!§%*µ$£¤"
        Dim DelChar As String
        Dim i As Integer

        For i = 1 To Len(ListDelChar)
            DelChar = ListDelChar.Chars(i - 1)
            strTxt = Replace(strTxt, DelChar, String.Empty)
        Next

        nochar = noaccent(strTxt)
        Return nochar

    End Function


'Permet d'avoir uniquement le nom du fichier à partir de son path
    Shared Function IsoleFile(ByVal path As String) As String

        Dim sSplit() As String
        sSplit = Split(path, "\")
        path = sSplit(UBound(sSplit))

        IsoleFile = path

    End Function

' Vire les \ et les renplace par des /
    'Pour passer d'un path à une url par exemple 
    Public Shared Function noantislash(ByVal txt)

        Dim strTemp As String = txt

        'Remplace le caractères indésirable
        strTemp = Replace(strTemp, "\", "/")
       
        noantislash = strTemp

    End Function


    'Upload
    Shared Function Upload( ByVal sFile As String, ByVal sFullPath As String, ByVal txtUpload As System.Web.UI.HtmlControls.HtmlInputFile) As String

        Try
            'Ecriture sur server, nécessite droits ntfs sur compte asp.net
            txtUpload.PostedFile.SaveAs(sFullPath)
            'Infos comme quoi çà c'est bien passé
            Upload = "Ok"
        Catch Ex As Exception
            Upload = "Envoie du fichier " & sFile & " vers le serveur n'a pas réussi pour la raison suivante : " & Ex.Message
        Finally

        End Try

    End Function

End Class

'-------------------------------------------------------------------------------------------------------------------------------------


'Fichier upload.aspx
'-------------------------------------------------------------------------------------------------------------------------------------
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="upload.aspx.vb" Inherits="votreappli.upload"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<title>Votre application</title>
</HEAD>
<body>
<form id="Form1" method="post" enctype="multipart/form-data" runat="server">

<TABLE class="ridge" cellSpacing="0" width="100%">
	<TR>
	               <TD width="30%" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>
                                       <FONT color="#ffffcc" size="2">Importation de Fichier</FONT></STRONG>
	               </TD>
	               <TD align="left" width="70%" colSpan="2" rowSpan="1"></TD>
	</TR>
	<TR>
		<TD width="15%">&nbsp;</TD>
		<TD width="85%">&nbsp;</TD>
	</TR>
	<TR>
		<TD width="15%">&nbsp;&nbsp;&nbsp;&nbsp; Fichier</TD>
		<TD width="85%">
		<INPUT id="txtUpload" type="file" name="txtUpload" runat="server">&nbsp;&nbsp;
		</TD>
	</TR>
	<TR>
		<TD width="15%">&nbsp;</TD>
		<TD width="85%">&nbsp;</TD>
	</TR>
</TABLE>
<br>
<asp:ImageButton id="BtnUpload" runat="server" ImageUrl="../img/GValider.gif" ToolTip="Enregistrer"></asp:ImageButton>
</form>
</body>
</HTML>


'Fichier upload.aspx.vb
'-------------------------------------------------------------------------------------------------------------------------------------

Imports System.Web

Public Class upload
    Inherits System.Web.UI.Page


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub


'Valide l'Upload
Private Sub BtnUpload_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles BtnUpload.Click

        If txtUpload.PostedFile.FileName <> String.Empty Then

            'Instanciation de la class
            Dim manip As New ManipFile

            'Initialisation des variables
            Dim sFullDir As String = "E:\VotreREP\VotreSSRep
            Dim sFile As String = manip.nochar(manip.IsoleFile(txtUpload.PostedFile.FileName))
            Dim sFullPATH As String = sFullDir & "\" & sFile
            
            'Upload
            manip.Upload(sFile, sFullPATH, txtUpload)

            'Réinitialisation des textbox
            sFullPATH = String.Empty
            sFullURL = String.Empty

         End If

    End Sub

End Class







 Conclusion

Remarque :

Lors d'un nettoyage en masse d'une chaine de caractère et remplacement par 'rien', évitez peut-être d'utiliser à tout va Replace(). C'est quant même plus court d'utiliser une boucle cf. nochar().

De plus de cette manière, vous pourrait enrichir cette fonction d'un paramètre supplémentaire spécifiant la liste de caractères à virer  selon les cas, stockez vos liste dans le web.config par exemple ! Ce qui serait impossible avec les Replace() en masse.

        Public Shared Function nochar(ByVal strTxt As String, Byval strList as String) As String

        ' Moi ces caractères j'en veux pas dans le nom d'un fichier, à vous de faire le trie
        Dim ListDelChar As String = strList
        Dim DelChar As String
        Dim i As Integer

        For i = 1 To Len(ListDelChar)
            DelChar = ListDelChar.Chars(i - 1)
            strTxt = Replace(strTxt, DelChar, String.Empty)
        Next

        nochar = noaccent(strTxt)
        Return nochar

    End Function

Ex : nochar("nom  du fichier d'origine", ConfigurationSettings.AppSettings("Liste1"))


PS : je n'ai pas eu le temps de tester la source adaptée qui est extraite d'une de mes appli en dev donc svp INDULGENCE ! Merci

Denis



 Sources du même auteur

Source avec Zip Source .NET (Dotnet) EXPORT DES DONNÉES SQL SERVER 2000 VERS ACCESS : UTILISATION...
Source .NET (Dotnet) GENERATION DE MOTS DE PASSE, ENCORE UN MAIS CELUI LÀ EST UN ...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) UPLOAD FILE par bensoft2006
Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
GÉNÉRER UNE CHAINE ALÉATOIRE par BinOff
DÉCOUPER UNE CHAINE DE CARACTÈRE par bambina100
CONCATÉNATION D'UN CHAÎNE DE CARACTÈRES par Jos

Commentaires et avis

Commentaire de theXman le 09/09/2004 16:38:30

Pas mal du tout.
Un autre un point que tu pourrais prendre en compte est l'octet NULL :
http://www.athias.fr/jerome/DOC/0x00_vs_ASP_File_Uploads_FR.pdf

Commentaire de arcollet le 22/09/2004 00:06:21

Merci pour l'info, j'ai effectivement fait l'impasse

denis

Commentaire de arcollet le 22/09/2004 00:13:46

en fait l'octet null est un " " ou le caractère ascii 255 équivalent de 0x00 ?
Parce que en ce qui concerne la fonction, dans sa liste de caractères j'épure bien tous les " " !

Denis

Commentaire de v1nce le 12/04/2005 12:13:42

Il est préférable de définir la liste des caractères qu'on accepte (et pas ceux qu'on veut exclure)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Couper chaîne de caractère [ par hugo7 ] Bonjour à tous , question bête je voudrais savoir comment en enlevent des caractère passer de cette chaîne: ~\JeuxVideo\images\image1.jpg à : image1.j Lecture de plusieurs données dans ma base SQL [ par olivierdn ] Bonjour, Je suis débutant en .NET et j'ai pas mal galéré pour trouver des bons tutos sur le C#. J'arrive à lire une donnée dans ma base de donnée. Ma powerweb file upload pour asp.net [ par lamixa ] bonjour à tous, Est ce quelqu'un pourrait me renseigner sur la manière de mettre à jour e.PostedFile.SavedFilePath dans levenement UploadManager1.Fil popup en utilisant la methode RegisterStartupScript [ par za3ima41 ] Bonsoir j'utilise le code suivant pour afficher une page popup (.aspx), le problème c'est que le système n'accepte pas cette suntaxe en disant : 'Sy IF switch et déclaration de variable csharp asp.net [ par phpdos ] Dans ma "[B]private void[/B]" où je charge mes labels et dans mon "[B]termLabel[/B]", j'affiche les numéros de boîte Voici : [code=cs]mTermLabel.Tex ORA-00911: Caractère non valide. [ par Marsu006 ] Bonjour, je suis nouvelle sur ce site et je ne sais pas très bien comment il fonctionne... J'ai installé la version oracle express (gratuite) pour wi probleme avec listView [ par sabeur88 ] j'ai crée une listview et je veux recuperer les données mais il affiche des erreurs au niveau de selectedIndices et Subtimes et je ne sais pas pourquo MORPION tableaux [ par Emma0789 ] bonjour, voilà afin de réaliser un projet de morpion, il faudrait afficher un tableau contenant des "-" qui serait au fur et à mesure remplacé par des Upload ficher "serveur applicatif" --> "Serveur bdd" [ par francy7285 ] Bonjour, mon application crée des fichier et les charge dans les tableaux de la base de données en utilisant de requete sql. Parfois les fichier so Connection string asp.net [ par jaron01 ] S.v.p je suis en train de programme une application avec asp.net+c# qui utilise Crystal Report lors de configuration de SqlConnection je me trouve fac


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,435 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales