begin process at 2010 03 17 22:35:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > 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

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Classé sous :champs, form, formulaire, upload, composant Niveau :Débutant Date de création :22/04/2005 Date de mise à jour :25/04/2005 08:52:17 Vu :12 338

Auteur : blat

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 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&#8212;
  • '************************************************************************
  • '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&#8212;
'************************************************************************

'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

Source .NET (Dotnet) COMMENT FORMATER LE NOMBRE DE CARACTÈRES D'UN COLONNE DANS U... par PascalCmoa
Source avec une capture Source .NET (Dotnet) AJOUTER UNE IMAGE À UN BOUTON par PascalCmoa
Source avec Zip Source avec une capture Source .NET (Dotnet) UPLOADER PLUSIEURS FICHIERS AVEC BARRE DE PROGRESSION AJAX par clemox
Source avec Zip Source .NET (Dotnet) DATAGRID AVEC RECHERCHE ALPHABÉTIQUE par gatita_dev
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAGE ANTI-BOT ET VALIDATION DE FORMULAIRES par badrbadr

 Sources en rapport avec celle ci

Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE par fabrice69
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
Source avec Zip Source avec une capture Source .NET (Dotnet) UPLOADER PLUSIEURS FICHIERS AVEC BARRE DE PROGRESSION AJAX par clemox
TUTORIAL ASPSMARTUPLOAD (POUR AIDER CEUX QUI COMME MOI N'ONT... par ranouf

Commentaires et avis

Commentaire de ObelixSuisse le 10/05/2005 19:46:34

Salut Blat...
Je viens de voir ta question résolue... hem le monde est petit mais je viens de poster un code similaire...
Et il me semble qu'il est bien plus court et surtout n'utilise pas de boucle lors de la conversion bin 2 ascii...
Alors regarde et donne moi des nouvelles... A Bientôt

 Ajouter un commentaire


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&#233;es access&nbsp;et je voudrais rajouter un upload de fichier(avec as Upload de fichier dans un formulaire [ par simon_eyer ] Bonjour, je suis pr&#233;sentement en train de me cr&#233;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" :&lt;form name="INVENTAIRE" ID="INVENTAIRE" action="pInventaire.asp" method="post"&gt;   ...&lt;/form&gt;<!-- END TEM


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,733 sec (3)

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