PHP header()下载后无法打开xlsx文件

时间:2016-09-07 12:31:45

标签: php

我使用header()从给定的url下载xlsx文件。该文件已下载但我无法打开它。它显示错误 enter image description here

以下是我的代码

$url = "http://example.com/attachment/file.xlsx"
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Disposition: attachment; filename=Test.xlsx');
readfile($url);
exit();

1 个答案:

答案 0 :(得分:1)

兰迪,你的问题看起来很怪异。服务响应中的URL与代码中的URL不同。

在开始下载之前 - 发送标题,对URL进行is_file()或其他检查,只有在文件存在时才开始下载。

我怀疑你正在尝试使用URL,而不是本地文件,并且URL可能不正确或在服务器上不允许对URL进行fopen。

样品:

  $url = "http://example.com/attachment/file.xlsx";
  if (!fopen($url,'r')) exit('File/URL not accessible'); 
  else fclose($url);
  header('Content-Type: application/octet-stream');
  header("Content-Transfer-Encoding: Binary"); 
  header('Content-Disposition: attachment; filename=Test.xlsx');
  readfile($url);
  exit();