【发布时间】:2011-06-04 20:19:22
【问题描述】:
我有一个使用二进制数据编写应用程序/zip 文档的 perl 程序。我可以在我的 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 表单参数传递时,问题实际上似乎发生了。有谁知道可能是什么问题?也许是大小限制?
【问题讨论】: