Такая проблема: написал скрипт, чтобы в зависимости от уровня пользователя у него грузился один из трех файлов.
Все происходит Ок, файл загружается, но... не открывается, почему-то WinZip его поврежденным показывает....
Прилагаю исходник на перле, кстати htaccess строчку "CharsetDisable on" - я прописал (собственно в этом
каталоге она у меня единственная строчка в htaccess\'е).
# Читаем данные формы
read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $value =~ s///g;
   if ($allow_html != 1) { $value =~ s/<([^>]|\\n)*>//g; }
   $FORM{$name} = $value;
 } 
# Проверяем уровень пользователя
$levid=$FORM{\'userid\'};
$level=$levid;
# Открываем file пользователю
if ($level=1) {
&downllev1;
}
elsif ($level=2) {
&downllev2;
} 
elsif ($level=3) {
&downllev3;
}
else {
#нет доступа
&return;
}
exit(0);
sub downllev1 {
# Загрузка для уровня 1
$price_file="files/level1/dealer_price1.zip";
&file;
exit;
}
  
sub downllev2 {
# Загрузка прайса для уровня 2
$price_file="files/level2/dealer_price2.jpg";
&file;
}
sub downllev3 {
# Загрузка прайса для уровня 3
$price_file="files/level3/dealer_price3.jpg";
&file;
}
sub return {
$price_tt="/dealers.htm";
print "Location: $price_tt\\n\\n";
exit;
}
sub file {
my $file=$price_file;
my $filesize = -s $file;
$filename="CopyRus_Dealer_price.zip";
print "Content-length: $filesize\\n";
print "Content-Disposition: attachment; filename=$filename\\n"; 
print "Content-type: application/x-zip-compressed\\n\\n";
open(FILE, "$price_file");
           
 binmode FILE;
 {
 local $/ = \\4096; # sending in 4k blocks
 print while ;
 }
 close(FILE); 
}