2013-10-16 51 views
0

我需要下載目錄中的所有文件,所以我首先創建了所有這些文件的(非gziped)tar。這個tar是有效的,可以在服務器上正確訪問,但不幸的是,我似乎無法通過PHP正確下載它。我收到一個錯誤,說'未知或損壞的圖像文件!當我嘗試打開下載的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'); 

不管我有同樣的問題。出的主意....

+0

不要使用tar文件的Windows用戶,它會迷惑他們 – 2013-10-16 02:41:10

+0

如果我手動將tar文件從服務器傳輸到Windows機器,它工作正常,所以沒有問題的tar文件。另外,它不是最終用戶應用程序,所以這不是問題。 – Ash

回答

2

刪除DOCTYPE聲明,此PHP文件的第一行必須是<?php沒有任何空格或在此之前的任何其他符號,在結尾處,刪除?>因爲它不需要

它不起作用,因爲你下載的文件實際上是從你的代碼開始的,並且只能在它的tar檔案的二進制代碼之後開始,這就是你無法打開這個文件的原因,因爲它在添加文本後不是真正的tar文件在它的開頭的行

+0

由於某種原因,這工作。謝謝! – Ash

+0

啊!我懂了。說得通。 – Ash

+0

完美!謝謝 :) – mfisher91