ViBa: Upload von Excel Sheets mit Makros

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

Subroutine, um die Parameters zu parsen...

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.

  1. 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

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.