2010-10-21 110 views
0

可能重複:
Open file, write to file, save file as a zip and stream to user for download如何添加一個txt文件,並創建一個PHP ZIP

我在上傳文件夾中的txt文件,我需要添加此文件,並創建一個ZIP即時提示用戶下載Zip文件,該文件應該包含文本文件。我該怎麼做,而且還需要什麼標題才能提示用戶下載.can任何人都可以幫我解決。我用從PHP Manual.Iam使用相同的功能來壓縮文件「http://davidwalsh.name/create-zip-php」和IAM編寫這些代碼相同constucts和IAM收到提示對於ZIP下載,但IAM得到警告信息時,我extarct文件

$zip_file = "my-archive.zip"; 
$file_path="../../../downloads/"; 
$files_to_zip = array($file_path."test_testing.txt"); 
$result = create_zip($files_to_zip,'my-archive.zip'); 

header('Content-Description: File Transfer');  
header('Content-Transfer-Encoding: binary'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header("Content-type: application/zip"); 
header("Content-Disposition: attachment; filename=".$zip_file); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

readfile($zip_file);  

該警告錯誤消息是「在這個壓縮使用一個或多個文件」 ..「(父文件夾)作爲其文件夾信息的一部分」

+0

可能重複,寫入文件,保存文件爲ZIP和流向用戶下載](http://stackoverflow.com/questions/2286639/open-file-write-to-file-save-file-as-a-zip-and-stream-to-user-for-download )或http://stackoverflow.com/questions/3972342/3972544#3972544 – 2010-10-21 14:29:41

回答

4

在create_zip()函數, 變化

foreach($valid_files as $file) { 
    $zip->addFile($file,$file); 
} 

foreach($valid_files as $file) { 
    $zip->addFile($file,pathinfo($file,PATHINFO_BASENAME)); 
} 

只要你沒有重名的文件,但不同的目錄,這將工作文件的數組

[打開文件的
+0

謝謝,它解決了但將所有上述頭足以壓縮Zip下載。我有一個10 MB的文本文件,當我拉鍊它應該被壓縮到250KB或者一些東西,但是它又顯示了大量的下載時間。我們需要t o添加任何頭文件 – Someone 2010-10-21 15:48:50

+0

@ Derby:添加頭文件(「Content-Length:」.filesize($ zip_file));' – 2010-10-21 21:58:52

+0

我是否必須包含任何文件,才能使此腳本正常工作? 在我的情況下,它不會創建ZIP文件,也不會執行任何操作。 – 2012-02-24 16:44:24

相關問題