【发布时间】:2010-10-18 09:12:32
【问题描述】:
我发现很难正确表达这个问题,让我试着解释一下我们的问题......
我们有一个内部网运行在带有 Apache2/PHP 5.2.4 的 Ubunutu 机器上。我们有一段 PHP 代码,它从一个不可公开访问的目录中读取一个文件并将其输出到屏幕上(代码如下):
$file_path = '/home/path/to/filename.gif';
if(file_exists($file_path)){
$output = FALSE;
//File Information
$path_parts = pathinfo($file_path);
$file_size = filesize($file_path);
$file_ext = (isset($path_parts['extension'])) ? strtolower($path_parts['extension']) : null;
$file_name = $path_parts['basename'];
//Sets up the headers
if($file_size > 0){
header('Content-Length: ' .$file_size);
}
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header('Content-Type: application/octet-stream');
//Reads the File
if($file_size > 0){
$handle = fopen($file_path, "r");
$output = fread($handle, $file_size);
fclose($handle);
}
//Outputs the File
echo $output;
}
在我们的网络中,当浏览到使用此代码的页面时,文件会完美快速地下载... 但是,当通过我们的 Cisco ASA/Proxy/VPN(不知道该怎么称呼它)访问此页面时,此代码会锁定浏览器,但最终会下载文件...
经过一番试验,取出标题并将文件内容回显到浏览器后,它打印没有问题。但是,一旦我将带有标题的行添加回代码中,它就会再次导致挂起,但仅在通过此框访问时..
有人遇到过这个问题,或者知道我们可以尝试前进吗?
感谢您的建议...
【问题讨论】:
-
您的代理是否想在将整个文件转发到浏览器之前下载整个文件?也许这取决于内容类型?如果将 Content-Type 更改为 image/gif 会发生什么?它仍然“锁定浏览器”吗?
-
如果我使用“Content-Type: image/gif”,它可以正常工作...
-
如果是这种情况...我怎样才能下载任何文件... pdfs、docs、xls 文件而不挂起?
-
如何在 Java 的 Kendo ProxyURL 代码中设置标头?
标签: php proxy http-headers