CONVERTIR RAPIDEMENT UN FICHIER UPLOADÉ (IMAGE) ET OBTENIR LES VALEURS DES CLEFS

ObelixSuisse Messages postés 15 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 26 mai 2010 - 10 mai 2005 à 19:33
arcade205 Messages postés 3 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 9 juillet 2007 - 22 déc. 2006 à 08:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31302-convertir-rapidement-un-fichier-uploade-image-et-obtenir-les-valeurs-des-clefs-convertbin2ascii

arcade205 Messages postés 3 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 9 juillet 2007
22 déc. 2006 à 08:32
Bonjour à tous,

Je me suis permis de modifier la fonction GetKeyVal() car il lui manquait un p'ti quelque chose ...

En fait, comment fait'on si on a plusieurs valeurs pour la même Key ??? On boucle ;-)
Me direz vous, c'est idiot d'avoir plusieurs input dans un formulaire ayant le même nom ?!
Eh bien, je ne parle pas de ce cas mais si vous utilisez un liste à choix multiple, vous serez bien embêté de récupérer que la 1ère valeur ...

Donc j'ai juste ajouté une boucle & quelques commentaires :

Function GetKeyVal(psKey, psDefault, psMyAsciiData)
Dim lsRet : lsRet = ""
Dim lsMyAsciiData : lsMyAsciiData = psMyAsciiData
Dim lsHeaderCode : lsHeaderCode = Left(lsMyAsciiData, InStr(1, lsMyAsciiData, vbcrlf, 0) - 1)
Dim liPos : liPos = 0
Dim liBegin : liBegin = 0
Dim liCutData : liCutData = 0
Dim lbGo : lbGo = False

'On parcourt récursivevement lsMyAsciiData
Do While Not lbGo
liBegin = InStr(1, lsMyAsciiData, "name=""" & psKey & """", 0) 'On recherche notre Key

If liBegin > 0 Then 'Si on trouve notre Key
liPos = liBegin + Len("name=""" & psKey & """") + 4 'Position de début

liCutData = InStr(liPos - 1, lsMyAsciiData, lsHeaderCode, 0) - liPos - 2 'On récupère la taille de la valeur de notre Key

lsRet = lsRet & Mid(lsMyAsciiData, liPos, liCutData) & ", " 'On extrait la valeur de Key

lsMyAsciiData = Right(lsMyAsciiData, Len(lsMyAsciiData) - (liPos + liCutData)) 'On supprime la 1ère valeur de notre Key
Else
lbGo = True 'Sinon on sort de la boucle
End If
Loop

'On supprime le dernier ', ' sinon on renvoie la valeur par défault
If lsRet <> "" Then lsRet Left(lsRet, Len(lsRet) - 2) Else lsRet psDefault

GetKeyVal = lsRet
End Function

& encore merci à ObelixSuisse pour cette fonction de base.
arcade205 Messages postés 3 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 9 juillet 2007
21 déc. 2006 à 11:22
Bonjour,

un grand merci pour ta source, les fonctions ConvertBin2Ascii() & GetKeyVal() me sont utiles à merveille !

Aligato.
AliBabNet Messages postés 2 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 7 juin 2006
7 juin 2006 à 16:09
Impeccable!

Bravo et merci Obelix, c'est le seul code valable et efficace que j'aie trouvé pour récupérer un upload + des champs de formulaire.

Avis aux visiteurs: foncez, c'est du bon! ;)
ObelixSuisse Messages postés 15 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 26 mai 2010
11 mai 2005 à 13:09
Salut Alain...
Merci je n'avais pas vu cette option ;-)
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
10 mai 2005 à 23:06
sais tu que tu peux éditer ton code ?
:)
ObelixSuisse Messages postés 15 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 26 mai 2010
10 mai 2005 à 19:33
Désolé c'est encore moi !
Une grosse erreur s'est glissée dans la fonction GetKeyVal, à qui la faute ? Au copier coller !
Vouala la bonne !

Function GetKeyVal(Key,Default,MyAsciiData)
HeaderCode=left(MyAsciiData,instr(1,MyAsciiData,vbcrlf,0)-1)
If InStr(1, MyAsciiData, "name=""" & Key & """", 0)>0 Then
pos=InStr(1, MyAsciiData, "name=""" & Key & """", 0)+Len("name=""" & Key & """")+4
getKeyVal=Mid(MyAsciiData,pos,InStr(pos-1,MyAsciiData, HeaderCode,0)-pos-2)
Else
getKeyVal=Default
End If
End Function
Rejoignez-nous