Accueil > > > RÉCUPÉRATION DES CHAMPS D'UN FORMULAIRE LORS D'UN UPLOAD SANS COMPOSANT
RÉCUPÉRATION DES CHAMPS D'UN FORMULAIRE LORS D'UN UPLOAD SANS COMPOSANT
Information sur la source
Description
Cette source sert a résoudre le pb que j'ai rencontré lors d'un upload sans composant. En effet, les différentes sources du net passent toutes par Request.BinaryRead ce qui empeche ensuite de faire Request.Form et c'est tres génant si le formulaire ne servait pas qu'a upload et contenait des champs textes. La fonction permet donc de retrouver la valeur d'un champ texte au milieu des données obtenu par BinaryRead et donc de pouvoir faire l'upload tout en retrouvant les infos du formulaire. Certains vont peut etre trouver ca bourrin mais bon je ne pouvais pas passez par un composant et je ne voulais pas faire l'upload dans un formulaire à part. Et puis j'ai vu que d'autre avaient eu le meme pb mais que personne n'y avait proposé de solution (ou sinon j'ai pas trouvé). Pour ce qui est du code en lui meme, vous m'excuserez, j'avais jamais toucher à l'asp et au formulaire avant avant-hier...
Source
- 'on récupere le contenu du formulaire en binaire
- Contenu = Request.BinaryRead(Request.TotalBytes)
-
- '************************************************************************
- 'LE FORMULAIRE SUIVANT :
- '<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="upload.asp">
- '<INPUT TYPE="submit" NAME="Enter" Value="UPLOAD">
- '<INPUT TYPE="file" NAME="FileTO" size="50">
- '</FORM>
- '************************************************************************
- 'RETOURNE PAR BINARYREAD :
- '-----------------------------7d037a33e8
- 'Content-Disposition: form-data;
- 'name="Enter" UPLOAD
- '-----------------------------7d037a33e8
- 'Content-Disposition: form-data;
- 'name="FileTO";
- 'filename="C:\Mes documents\Test.txt"
- 'Content-Type: text/plain
- 'bla bla bla Contenu de Test.text bla bla bla
- '-----------------------------7d037a33e8—
- '************************************************************************
-
- 'fonction retournant la valeur dun champ texte
- 'recu d'un formulaire lu par BinaryRead
- public function getValue(Contenu,var)
- PosDebutValue=0
- getValue=""
- 'marqueur de debut
- LimitASCII = "name=" & chr(34) & var & chr(34)
- LimitBin=""
- for i = 1 to Len(LimitASCII)
- LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
- next
- 'position marqueyr de debut
- PosDebutValue = InstrB(1, Contenu, LimitBin)
- 'si on trouve le marqueur
- if PosDebutValue <> 0 then
- 'position debut de la valeur
- PosDebutValue = PosDebutValue + LenB(LimitBin)
- 'marqueur de fin
- LimitASCII = "-----"
- LimitBin=""
- For i = 1 to Len(LimitASCII)
- LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
- next
- 'position marqueur de fin
- PosFinValue = InstrB(PosDebutValue, Contenu, LimitBin)
- 'position fin de la valeur
- PosFinValue = PosFinValue - 2
- 'recuperation valeur
- valBin = MidB(Contenu, PosDebutValue , (PosFinValue - PosDebutValue))
- getValue = ""
- for i = 1 to LenB(valBin)
- getValue=getValue & chr(ASCB(MidB(valBin, i, 1)))
- next
- getValue=Right(getValue,Len(getValue)-4)
- end if
- end function
-
- 'fonction qui permet d'uploader
- 'source : http://www.asp-magazine.com/fr/asp/blitz/blitz10.asp
- 'Contenu : Contenu du post du formulaire en binaire
- 'Retourne le nom du fichier uploader
- function upload(Contenu)
- 'recuperation de la taille
- TailleContenu = Request.TotalBytes
- PosDebutFic=0
- upload=""
- 'marqueur pour recuperer le nom du fichier
- LimitASCII = "filename=" & chr(34)
- 'conversion en binaire
- LimitBin=""
- for i = 1 to Len(LimitASCII)
- LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
- next
- 'recuperation de la position du marqueur
- PosDebutFic = InstrB(1, Contenu, LimitBin)
- 'si le marqueur est présent (sinon pas de fichier a uploader)
- if PosDebutFic <> 0 then
- 'debut du nom de fichier
- PosDebutFic = PosDebutFic + LenB(LimitBin)
- 'marqueur de fin de nom
- LimitASCII = "Content-Type:"
- 'conversion en binaire
- LimitBin=""
- For i = 1 to Len(LimitASCII)
- LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
- next
- 'position de fin du nom
- PosDebutCont = InstrB(1, Contenu, LimitBin)
- PosFinFic = PosDebutCont - 3
- 'nom du fichier en binaire
- NomFichierBin = MidB(Contenu, PosDebutFic , (PosFinFic - PosDebutFic))
- 'conversion en ASCII
- NomFichierAscii = ""
- for i = 1 to LenB(NomFichierBin)
- NomFichierAscii = NomFichierAscii & chr(ASCB(MidB(NomFichierBin, i, 1)))
- next
- 'si c'est bien un jpg
- if (Right(NomFichierAscii,4)=".jpg" or Right(NomFichierAscii,4)=".JPG") then
- 'position de debut des datas
- PosDebutCont = PosDebutCont + LenB(LimitBin)
- PosFinCont = InstrB(PosDebutCont, Contenu, chrB(13))
- PosDebutData = PosFinCont + 4
- 'marqueur de fin des datas
- LimitASCII= "----"
- 'conversion en binaire
- LimitBin=""
- for i = 1 to Len(LimitASCII)
- LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
- next
- 'position de fin de data
- PosFinData= InstrB(PosDebutData, Contenu, LimitBin) -2
- 'recuperation des datas
- DataFichier = MidB(Contenu, PosDebutData , (PosFinData - PosDebutData))
- 'recuperation du nom de fichier
- upload = right(NomFichierAscii, (Len(NomFichierAscii) - InstrRev(NomFichierAscii, "\")))
- 'creation du fichier sur le serveur
- Set FSO = Server.CreateObject("Scripting.FileSystemObject")
- Set Out=FSO.CreateTextFile( Server.MapPath("\Temp") & "\" & upload , True)
- 'copie des datas
- For i = 1 to LenB(DataFichier)
- Out.Write chr(AscB(MidB(DataFichier,i,1)))
- Next
- 'fermeture du fichier
- Out.close
- Set Out=nothing
- end if
- end if
- end function
'on récupere le contenu du formulaire en binaire
Contenu = Request.BinaryRead(Request.TotalBytes)
'************************************************************************
'LE FORMULAIRE SUIVANT :
'<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="upload.asp">
'<INPUT TYPE="submit" NAME="Enter" Value="UPLOAD">
'<INPUT TYPE="file" NAME="FileTO" size="50">
'</FORM>
'************************************************************************
'RETOURNE PAR BINARYREAD :
'-----------------------------7d037a33e8
'Content-Disposition: form-data;
'name="Enter" UPLOAD
'-----------------------------7d037a33e8
'Content-Disposition: form-data;
'name="FileTO";
'filename="C:\Mes documents\Test.txt"
'Content-Type: text/plain
'bla bla bla Contenu de Test.text bla bla bla
'-----------------------------7d037a33e8—
'************************************************************************
'fonction retournant la valeur dun champ texte
'recu d'un formulaire lu par BinaryRead
public function getValue(Contenu,var)
PosDebutValue=0
getValue=""
'marqueur de debut
LimitASCII = "name=" & chr(34) & var & chr(34)
LimitBin=""
for i = 1 to Len(LimitASCII)
LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
next
'position marqueyr de debut
PosDebutValue = InstrB(1, Contenu, LimitBin)
'si on trouve le marqueur
if PosDebutValue <> 0 then
'position debut de la valeur
PosDebutValue = PosDebutValue + LenB(LimitBin)
'marqueur de fin
LimitASCII = "-----"
LimitBin=""
For i = 1 to Len(LimitASCII)
LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
next
'position marqueur de fin
PosFinValue = InstrB(PosDebutValue, Contenu, LimitBin)
'position fin de la valeur
PosFinValue = PosFinValue - 2
'recuperation valeur
valBin = MidB(Contenu, PosDebutValue , (PosFinValue - PosDebutValue))
getValue = ""
for i = 1 to LenB(valBin)
getValue=getValue & chr(ASCB(MidB(valBin, i, 1)))
next
getValue=Right(getValue,Len(getValue)-4)
end if
end function
'fonction qui permet d'uploader
'source : http://www.asp-magazine.com/fr/asp/blitz/blitz10.asp
'Contenu : Contenu du post du formulaire en binaire
'Retourne le nom du fichier uploader
function upload(Contenu)
'recuperation de la taille
TailleContenu = Request.TotalBytes
PosDebutFic=0
upload=""
'marqueur pour recuperer le nom du fichier
LimitASCII = "filename=" & chr(34)
'conversion en binaire
LimitBin=""
for i = 1 to Len(LimitASCII)
LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
next
'recuperation de la position du marqueur
PosDebutFic = InstrB(1, Contenu, LimitBin)
'si le marqueur est présent (sinon pas de fichier a uploader)
if PosDebutFic <> 0 then
'debut du nom de fichier
PosDebutFic = PosDebutFic + LenB(LimitBin)
'marqueur de fin de nom
LimitASCII = "Content-Type:"
'conversion en binaire
LimitBin=""
For i = 1 to Len(LimitASCII)
LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
next
'position de fin du nom
PosDebutCont = InstrB(1, Contenu, LimitBin)
PosFinFic = PosDebutCont - 3
'nom du fichier en binaire
NomFichierBin = MidB(Contenu, PosDebutFic , (PosFinFic - PosDebutFic))
'conversion en ASCII
NomFichierAscii = ""
for i = 1 to LenB(NomFichierBin)
NomFichierAscii = NomFichierAscii & chr(ASCB(MidB(NomFichierBin, i, 1)))
next
'si c'est bien un jpg
if (Right(NomFichierAscii,4)=".jpg" or Right(NomFichierAscii,4)=".JPG") then
'position de debut des datas
PosDebutCont = PosDebutCont + LenB(LimitBin)
PosFinCont = InstrB(PosDebutCont, Contenu, chrB(13))
PosDebutData = PosFinCont + 4
'marqueur de fin des datas
LimitASCII= "----"
'conversion en binaire
LimitBin=""
for i = 1 to Len(LimitASCII)
LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, i, 1)))
next
'position de fin de data
PosFinData= InstrB(PosDebutData, Contenu, LimitBin) -2
'recuperation des datas
DataFichier = MidB(Contenu, PosDebutData , (PosFinData - PosDebutData))
'recuperation du nom de fichier
upload = right(NomFichierAscii, (Len(NomFichierAscii) - InstrRev(NomFichierAscii, "\")))
'creation du fichier sur le serveur
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Out=FSO.CreateTextFile( Server.MapPath("\Temp") & "\" & upload , True)
'copie des datas
For i = 1 to LenB(DataFichier)
Out.Write chr(AscB(MidB(DataFichier,i,1)))
Next
'fermeture du fichier
Out.close
Set Out=nothing
end if
end if
end function
Conclusion
Voila :o) J'ai pas encore tout tester mais ca marche pour ce que je veux en faire...
Historique
- 22 avril 2005 11:57:42 :
- Oups... Faute de frappe :) Voila c'est mieu comme ca
- 25 avril 2005 08:52:17 :
- Petite amélioration :o)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
FORM & UPLOAD [ par salmoliv ]
BonjourJ'utilise une page avec un formulaire (new.asp).Dans cette page, j'ai fait un include d'une autre page (upload.asp).Dans cette page upload.asp,
upload d'un fichier sans composant ni formulaire [ par Jarodnet ]
Hello !je recherche le moyen d'uploader un fichier en ASP (VBScript).Dans mon code, dans un premier temps, je parcours le répertoire partagé donné par
Form et BinaryRead ??? [ par blat ]
Bonjour,Je dois faire un formulaire avec deux champs texte contenant une description d'une photo en francais et en anglais et un troisieme champ File
Formulaire avec champs texte et upload [ par gerfaut11 ]
Bonjour J'ai un formulaire avec des champs texte qui enrichi une base de données access et je voudrais rajouter un upload de fichier(avec as
Upload de fichier dans un formulaire [ par simon_eyer ]
Bonjour, je suis présentement en train de me créer un formulaire avec plusieurs champs texte et deux champs qui de type file. Comment fait-o
Validation d'un formulaire [ par hudon77 ]
Bonjour à tous ! J'ai deux page asp une qui contient un formulaire et l'autre recois la valeur des champs, les valide et insert dans la bd si tout es
Comment utiliser CustomValidator pour verifier plusieurs champs [ par jolazoule ]
Salut,je viens de découvrir le CustomValidator qui semble correpondre à mes besoins. En effet j'ai un formulaire en fin de page, et je souhaite pouvoi
problème de validation de formulaire de upload sans fichier envoyé [ par richardg ]
Bonjour,J'utilise le logiciel de upload fileup softartisant dans une page web qui permet aux utlisateurs de placer une petite annonce agrémentée d'une
Formulaire - verifier la disponibilité [ par ThomasCo ]
Bonjour,j'ai une page ASP(page.asp) qui contient un formulaire; est ce que c est possible de mettre 2 bouttons :1. pour sauvegarder les champs dans DB
FORM qui charge deux fois ma page [ par aloisio11 ]
Bonjour à tous, Voici mon "form" :<form name="INVENTAIRE" ID="INVENTAIRE" action="pInventaire.asp" method="post"> ...</form><!-- END TEM
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Forum
CRYPTANALYSECRYPTANALYSE par expertnajeh
Cliquez pour lire la suite par expertnajeh AJOUT ET BDAJOUT ET BD par zaydounhlel
Cliquez pour lire la suite par zaydounhlel PROBLEME RS232PROBLEME RS232 par houfia
Cliquez pour lire la suite par houfia
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|