1

我需要下载一个目录中的所有文件,因此我首先创建了所有这些文件的(非 gzip 压缩)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' );

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

4

1 回答 1

2

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

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

于 2013-10-16T02:39:54.237 回答