Ed X: Datenupload via HTTP, was ist zu beachten?

Beitrag lesen

Hi Calocybe und n.d. parker!

Erstmal danke für die Antworten. Offensichtlich habe ich mich etwas fehlerhaft ausgedrückt: es geht hier ja um Upload. Und deshalb meine ich das was in dem Datenstrom steht, welchen der CLient an den Server schickt.

Wenn ihr Böcke habt das zu vertiefen, ihr braucht nur kopieren:

<-----------schnipp------------------>

#!f:/copyprog/perl56/bin/perl.exe

#use integer;
binmode STDIN;
read STDIN, $Daten, $ENV{'CONTENT_LENGTH'};

($boundary = $ENV{CONTENT_TYPE}) =~ s/^(.+)boundary=//;

@Teile = split /--$boundary/, $Daten;
foreach $part (@Teile)
  {
  # Eingangsrattenschwanz abschneiden
  $part =~ s/(Content-Disposition: form-data; name=")//;
  # aufteilung in namen und inhalt
  ($name, $part) = split(/"/, $part, 2);
  # entfernt fuehrende und endende whitspaces aus namen und part
  $name =~ s/\s*//;
  $part =~ s/^\s*//;
  $part =~ s/\s{2}$//;
  # ist dies ein teil der ein Attachement enthaelt??????
  if ($part =~ /filename/)
   {
   $namefeld = $name;
   # extrahiere den filename, mimetype, file
   ($filename, $mimetype) = split(/Content-Type: /i, $part, 2);
   ($mimetype, $file)  = split(/\n/, $mimetype, 2);

# isolate filename
   ($filename) = ($filename =~ /"(.*)"/);
   while ($filename =~ /\/) { $filename =~ s/^.*\//; }

$mimetype =~ s/\s*$//;
   # removes the leading whitespaces from the actual filecontent
   $file =~ s/^\s{2}//;
   }
  }

return the infos

print "Content-type: text/html\n\n";
print "<HTML>\n";
 print "<head><title>returnpage</title></head>\n";
 print "<body style="font: 14px Arial, Verdana;">\n";
 print "<center>\n";
 print "<H2>Upload completed</H2>\n";
 print "<HR>\n";
 print "</center>\n<br>";
 print "Grenzzeichenkette = <b>$boundary</b><br><br>\n";
 print "Die Daten sind folgendermaßen:<br><br><br><br>\n";
 print "name des input-felds: <b>$namefeld</b><br><br>";
 print "name der angelieferten datei: <b>$filename</b><br><br>";
 print "mimetype(oder eben nicht) der angelieferten datei: <b>$mimetype</b><br><br>";
 print "den ausdruck des dateiinhalts spar ich mir!!!<br><br>";
 print "</BODY>\n";
 print "</HTML>\n";

<-----------schnapp----------------->

und weil past und copy so einen spaß macht:

<-----------schnipp----------------->

<html>
<head>
        <title>Fileupload</title>
</head>

<body>

<form name="Upload" action="http://eddie/cgi-bin/snippet1.pl" method="post" enctype="multipart/form-data">
  <input type="file" name="Dateiupload" size="30"><br><br>
  <input type="submit" value="Upload starten">
</form>
</body>
</html>

<-----------schnapp----------------->

ok,ok, jetzt nich hauen. Ich weiß, dass das nicht der sauberste code ist und die RegEx sind nach Mitternacht geschrieben.... Was soll's, er tut's.

Wenn ihr die gefakte Datei(eigentlich zip nach jpg benannt) mit dem IE5.xx hochbolzt bekommt ihr trotzdem einen compressed Content-Type, NN4-6.x schnappt sich die Endung und sagt fröhlich image/jpeg.

Good nigth Ed X