Hallo habe folgendes Script um eine Datei auf den Webserver hochzuladen.
Wie intergriere ich jedoch den Zugriff auf einen Apache Server mit reqest in dieses Script?
use CGI;
use CGI::Carp 'fatalsToBrowser';
use Data::Dumper;
$CGI::POST_MAX = 1024 * 1024; # Hoechstens 1 MByte akzeptieren!
my $query = new CGI;
use WebCenter;
my $timestamp = time();
my $scriptname = "checkin1.pl";
# my ($dir) = ($ENV{SCRIPT_FILENAME} =~ q#(.*)/#);
use Apache::Request;
my $r = Apache->request();
my $apr = Apache::Request->new($r);
# Es sind Daten angekommen; auswerten.
my $filefh = $query->upload('filename');
my $finfo = $query->uploadInfo($filefh);
# Es sind Daten angekommen; auswerten.
my $filefh = $query->upload('filename');
my $finfo = $query->uploadInfo($filefh);
# Wir pruefen aber zuerst, ob der File-Transfer auch
# richtig abgeschlossen werden konnte (User hat nicht
# mit STOP die Uebertragung geschlossen):
if (!$filefh && $query->cgi_error) {
my $errmsg = $query->header(-status => $query->cgi_error);
print
$query->header(),
$query->start_html("Fehler"),
"Fehler beim Upload: $errmsg",
$query->end_html();
exit 0;
}
while (<$filefh>) {
# Tue etwas mit der aktuellen Zeile in $_
# Der Filehandle ist okay, wir lesen nun alle Daten ein
# und speichern sie irgendwohin. Wir gehen davon aus,
# dass es sich um eine binaere Datei handelt:
open(OUTFILE, "> /tmp/fromupload.$$") or die "can't create file: $!\n";
while (read($filefh, $buffer, 1024)) {
print OUTFILE $buffer;
}
close(OUTFILE);
# Okay, alles klar!
print
$query->header(),
$query->start_html('File uploaded'),
"Erhalten: ", $query->p(),
$query->pre(Dumper($finfo)),
$query->end_html();
# Wir speichern auch die diversen Informationen zu dieser Datei
# in einem Logfile (das sollte lieber mittels flock()
# atomar geschehen (NYI)).
open(LOGFILE, ">> \\dev.erlf.siemens.de:8000/") or die "can't open log: $!\n";
print LOGFILE "/tmp/fromupload.$$:\n", Dumper($finfo), "\n";
close(LOGFILE);
Gruß
ledzep