Такая проблема: написал скрипт, чтобы в зависимости от уровня пользователя у него грузился один из трех файлов.
Все происходит Ок, файл загружается, но... не открывается, почему-то 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);
}