Accueil > > > 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%" > <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%"> </TD>
- <TD width="85%"> </TD>
- </TR>
- <TR>
- <TD width="15%"> Fichier</TD>
- <TD width="85%">
- <INPUT id="txtUpload" type="file" name="txtUpload" runat="server">
- </TD>
- </TR>
- <TR>
- <TD width="15%"> </TD>
- <TD width="85%"> </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%" > <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%"> </TD>
<TD width="85%"> </TD>
</TR>
<TR>
<TD width="15%"> Fichier</TD>
<TD width="85%">
<INPUT id="txtUpload" type="file" name="txtUpload" runat="server">
</TD>
</TR>
<TR>
<TD width="15%"> </TD>
<TD width="85%"> </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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|