| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
| mpParser | Recevoir des fichiers issus du client
Exemple : Sur le poste client : <form name="F1" method="POST" enctype="multipart/form-data" action="depose.cgi"> <input type="hidden" name="Appel" value="attach"> <input type="file" name="Donnees" style="font-size:8pt; width:250"> <input type="submit" value="Déposer"> </form>Sur le serveur :
Fichier envoyé : "Répertoire/Temp/fichier envoyé.jpg" dans le champ : "Donnees"
Perl :
$$FORM{'Appel'} = "attach"
JavaScript :
$$FORM{'Donnees'} = "fichier_envoye.jpg" $$FILE{'Donnees'} = <le fichier envoyé>
FORM[0]['Appel'] = "attach"
FORM[0]['Donnees'] = "fichier_envoye.jpg" FILE[0]['Donnees'] = <le fichier envoyé> | |||||||||||||||
| Syntaxe | Parser(FORM) | |||||||||||||||
| Paramètres |
| |||||||||||||||
| Fonctions util. |
|
| Code Perl |
sub mpParser {local($FORM,$FILE) = @_;
local($In,$sep);
if ($ENV{'REQUEST_METHOD'} ne 'POST') {return &Parser($FORM)}
if ($ENV{'CONTENT_TYPE'}!~/^multipart\/form-data/) {return &Parser($FORM)}
if ($ENV{'CONTENT_TYPE'}!~/boundary=\"?([^\";,]+)\"?/) {return 1}; $sep = "--".$1;
if ($ENV{"CONTENT_LENGTH"}>1000000) {return 2}
read(STDIN,$In,$ENV{"CONTENT_LENGTH"});
local(@T,$i,$k,$Head,$Body,$x1,$x2,$nom,$val,$fic);
if ($In=~/^$sep\-\-/) {return 0}
if ($In!~/^$sep(\r\n|\n|\r)/) {return 31}; local $CRLF = $1;
if ($In!~/^($sep$CRLF)/) {return 32}; $In = substr($In,length($1));
if ($In!~/($CRLF$sep\-\-$CRLF*)$/) {return 33}; $In = substr($In,0,length($In)-length($1));
@T = split(/$CRLF$sep$CRLF/,$In);
for($i=0;$i<scalar(@T);$i++) {
if (($k=index($T[$i],$CRLF.$CRLF))==-1) {return 34}; $Head = substr($T[$i],0,$k); $Body = substr($T[$i],$k+2*length($CRLF));
$Head =~ s/$CRLF/\n/g;
$Head =~ s/\n\s+/ /g;
while($Head=~/([\-\w!\#\$\%\&\'\*\+\.\^\`\|\{\}~]+):\s+([^\n]*)/) {
$x1 = $1; $x2 = $2;
$Head =~ s/([\-\w!\#\$\%\&\'\*\+\.\^\`\|\{\}~]+):\s+([^\n]*)//;
if (lc($x1) eq "content-disposition") {
if ($x2=~/ name=\"?([^\";]*)\"?/) {$nom = $1} else {$nom = "ano"}
if ($x2=~/ filename=\"?([^\"]*)\"?/) {$fic = $1} else {$fic = ""}
if ($fic eq "") {$val = $Body} else {$$FILE{$nom} = $Body; $val = &fileParser($fic)}
if (!(defined $$FORM{$nom})) {$$FORM{$nom} = $val} else {$$FORM{$nom} = $$FORM{$nom}.",".$val}
}}
}
return 0
}
sub fileParser {local($val) = @_;
local($x);
$val =~ s/.*[\\\/]//; $x = "";
if ($val=~/(\.[^\.]*)$/) {$x = $1; $val = substr($val,0,length($val)-length($x))}
return &ascParser($val).$x;
}
sub ascParser {local($val) = @_;
local $z="AAAAAAACEEEEIIIIDNOOOOO_OUUUUYbBaaaaaaaceeeeiiiidnooooo_ouuuuyBy";
local($x,$i,$k);
$x = "";
for($i=0;$i<length($val);$i++) {
if (substr($val,$i,1)=~/\w/) {$x .= substr($val,$i,1); next}
$k = ord(substr($val,$i,1)); if ($k<0) {$k += 256}
if ($k>=192) {$x .= substr($z,$k-192,1)} else {$x .= "_"}
}
return $x
}
|
| Code JavaScript |
function mpParser(FORM,FILE) {
return Parser(FORM)
}
|