У меня есть Perl-программа, которая пишет приложение / zip-документ с двоичными данными. Я могу сделать следующий код в моем скрипте CGI.
print $cgi->header(-type=>"application/x-zip; name=\"$filename.zip\"", -content_disposition=> "attachment; filename=\"$filename.zip\""). "\n";
print $result
где $result
- двоичные данные. Затем будет выведена страница, которая предлагает пользователю скачать zip
Что я хочу сделать, так это передать всю «веб-страницу» в качестве параметра формы, поэтому я сделал это:
open $resultfh, ">", \$output_buffer or die "could not open buffer";
print $resultfh $cgi->header(-type=>"application/x-zip; name=\"$filename.zip\"", -content_disposition=> "attachment; filename=\"$filename.zip\""). "\n";
print $resultfh $result
и тогда я могу передать $output_buffer
как переменную.
Проблема в том, что это не работает, что-то кажется пропущенным, потому что мне предлагают загрузить zipfile, но zipfile поврежден, я получаю несоответствие между ожидаемыми байтами и фактические байты или что-то.
Я думаю это связано с тем, что выходной буфер не находится в двоичном режиме, но я не могу прочитать заголовок содержимого в двоичном режиме, поэтому я могу иметь дескриптор файла, который будет частично в тексте и частично в двоичном?
Если нет, какие варианты у меня есть?
РЕДАКТИРОВАТЬ: Проблема на самом деле, кажется, возникает, когда я передаю двоичные данные в качестве параметра формы CGI. Кто-нибудь знает, в чем может быть проблема? Может быть, ограничение размера?