通过PHP下载TAR

时间:2013-10-16 02:38:10

标签: 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">

<?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 );
?>

另外,我尝试了一些不同的标题变体,例如:

header( 'Content-type: application/x-tar' );
header( 'Content-type: application/force-download' );

无论如何我都有同样的问题。出于想法......

1 个答案:

答案 0 :(得分:2)

删除doctype声明,此PHP文件的第一行必须是<?php,前面没有任何空格或任何其他符号,最后删除?>,因为它不需要

它无法正常工作,因为你下载的文件实际上是从你的代码行开始的,而且只是在tar存档的二进制代码之后,这就是你无法打开这个文件的原因,因为它不是真正的tar文件之后在其开头添加文本行