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
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
VBVB par 25721088
Cliquez pour lire la suite par 25721088 GESTION FORMATIONGESTION FORMATION par 25721088
Cliquez pour lire la suite par 25721088
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|