Chome不合需要地下载PHP文件

时间:2016-02-23 23:13:19

标签: java php browser webserver

点击网页上的链接后,Chrome会下载一个PHP文件。内容是一些与我无关的XML。很少见,我宁愿Chrome在同样的情况下表现得像IE,也就是打开一个Java应用程序。

根据此主题的先前研究,请允许我抢占可能的答案:

  1. 我没有互联网下载管理器。

  2. 我已经尝试从一开始就清除所有缓存数据。

  3. 通过比较,Firefox提示我使用Java Web Starter保存或打开文件;选择后者会产生预期的行为。

    我已经阅读了有关安装Xamp或Wamp的内容 - 我真的不明白它们是什么,并且我不愿意安装它们。除了学习如何安抚Chrome之外,我还想了解Chrome正在尝试做什么,以及当IE和Firefox能够这样做时它为什么不起作用。在这方面,我们赞赏php文件的一般解释,它们与Java和/或Java Web Starter的关系。

2 个答案:

答案 0 :(得分:1)

  

虽然这看起来更适合超级用户,但我会给出两分钱。我认为这与Chrome去年的NPAPI支持有关。

详细说明,Java浏览器插件依赖于NPAPI,Chrome不再支持启动第45版.Oracle似乎没有解决这个问题,而是推动用户寻找仍然支持NPAPI的替代方案(即Firefox) ,Safari)。

在这种情况下,当Chrome加载有问题的页面时,它的行为就像没有安装Java一样(因为它无法打开Java应用程序)。

参考/进一步阅读:

答案 1 :(得分:0)

剪切并粘贴此PHP并将其另存为名为download.php的php文件。当您要使用文件名下载文件时,请调用它。例如:

的download.php?文件= nameofyourfilehere

这将强制下载而不是打开文件。它还可以处理大文件。

<?php

$file = $_REQUEST['file'];
$filename = $file;

  define('CHUNK_SIZE', 1024*1024); // Size (in bytes) of tiles chunk

  // Read a file and display its content chunk by chunk
  function readfile_chunked($filename, $retbytes = TRUE) {
    $buffer = '';
    $cnt =0;
    // $handle = fopen($filename, 'rb');
    $handle = fopen($filename, 'rb');
    if ($handle === false) {
      return false;
    }
    while (!feof($handle)) {
      $buffer = fread($handle, CHUNK_SIZE);
      echo $buffer;
      ob_flush();
      flush();
      if ($retbytes) {
        $cnt += strlen($buffer);
      }
    }
    $status = fclose($handle);
    if ($retbytes && $status) {
      return $cnt; 
    }
    return $status;
  }


header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($file).";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile_chunked($filename);
exit(); 
?>