通过PHP下载TAR

通过PHP下载TAR,php,download,tar,Php,Download,Tar,我需要下载目录中的所有文件,所以我首先创建了所有这些文件的(非gziped)tar。这个tar是有效的,可以在服务器上正确访问,但不幸的是,我似乎无法通过PHP正确下载它。我收到一个错误,说“未知或损坏的图像文件!”当我试图打开下载的tar文件时 这是我的php文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

我需要下载目录中的所有文件,所以我首先创建了所有这些文件的(非gziped)tar。这个tar是有效的,可以在服务器上正确访问,但不幸的是,我似乎无法通过PHP正确下载它。我收到一个错误,说“未知或损坏的图像文件!”当我试图打开下载的tar文件时

这是我的php文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<?php
  $filename = '/path/to/my.tar';

  header( 'Content-type: archive/tar' );
  header( 'Content-Disposition: attachment; filename="' . basename( $filename ) . '"'  );
  header( 'Content-Transfer-Encoding: binary' );
  header( 'Content-Length: ' . filesize( $filename ) );
  readfile( $filename );
?>

不管怎样,我也有同样的问题。出于想法……

删除doctype声明,此PHP文件的第一行必须是
,因为它不是必需的


它不起作用,因为您正在下载文件,该文件实际上是从您的代码中以行开始的,并且仅在它是tar存档的二进制代码之后,这就是为什么您无法打开该文件的原因,因为在文件开头添加了文本行之后,它不是真正的tar文件

不要为windows用户使用tar文件,如果我手动将tar文件从服务器传输到windows机器上,它工作正常,因此tar文件没有问题。而且,它不是最终用户应用程序,所以这不是问题。啊!我懂了。有道理,太好了!谢谢:)
header( 'Content-type: application/x-tar' );
header( 'Content-type: application/force-download' );