Upload von Excel Sheets mit Makros
ViBa
- perl
Hallo,
Ich versuche excel Sheets hochzuladen. Wenn das Excel Sheet keine Makros enthaelt, funktionniert es wunderbar. Aber sobald Makros definiert sind, wird es nicht mehr auf dem Server hochgeladen.
Ist das Problem bekannt?
Da ich aber nicht mit CGI Objekte arbeite, koennte es auch daran liegen... Hier der Code
sub parse_query {
my (@pairs,%p);
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, my $buffer, $ENV{'CONTENT_LENGTH'});
if (lc $ENV{'CONTENT_TYPE'} eq 'application/x-www-form-urlencoded') {
@pairs = split(/&/, $buffer);
}
elsif (lc $ENV{'CONTENT_TYPE'} =~ m/^multipart/form-data; boundary=(.+)$/) {
my $boundary="--$1";
my @pieces = split(/$boundary/,$buffer);
foreach (@pieces) {
s/^\r\n//sg;
if ( m/^Content-Disposition: form-data; name="(.+?)"\r\n\r\n(.+)/is ) {
my $name = $1;
my $content = $2;
$content =~ s/(\r\n)+$//g;
$p{$name}= $content;
}
elsif ( m/^Content-Disposition: form-data; name="(.*?)"; filename="(.*?)"\r\nContent-type:.*?\r\n\r\n(.+)/is ) {
my $name = $1;
my $filename = $2;
my $content = $3;
$content =~ s/[\r\n]*$//g;
$filename =~ s/.*\//;
$filename =~ s/.*///;
$p{$name}->{"filename"} = $filename;
$p{$name}->{"content"} = $content;
}
}
}
else { &error ("Invalid CONTENT_TYPE "<b>$ENV{'CONTENT_TYPE'}</b>"!"); }
}
my $pair;
foreach $pair (@pairs) {
my ($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
if ($name eq "MaskCode") { $p{$name} = uc($value); }
else { $p{$name}=$value; }
}
return (%p);
}
my $params = &parse_query();
my $xls = $params{'XLS'};
my $xlsname = $xls->{'filename'};
my $xlscontent = $xls->{'content'};
my $fullxlsname = $upload_path . "/" . $xlsname;
if ($xlsname ne "") {
if (open (OUTPUT,">$fullxlsname")) {
binmode OUTPUT;
print OUTPUT $xlscontent;
close OUTPUT;
}
}
Danke fuer die Hilfe!
VB.
Ich versuche excel Sheets hochzuladen. Wenn das Excel Sheet keine Makros enthaelt, funktionniert es wunderbar. Aber sobald Makros definiert sind, wird es nicht mehr auf dem Server hochgeladen.
Hä? HTTP kennt kein Excel und kein VBA, aus seiner Sicht sind das binäre Ressourcen. Die werden hochgeladen oder nicht.
Da ich aber nicht mit CGI Objekte arbeite, koennte es auch daran liegen.
Möglich wäre es, dein Code ist - mit Verlaub - grauenvoll. Bitte verwende das CGI-Modul, dort die Methoden für Uploads, damit könntest du die Fehlerquelle "serverseitige Verarbeitung" ausschließen.
Siechfred