2012-03-29 75 views
0

下載我需要通過頭下載文件幫助其工作正常,但問題是,該文件是一個文件夾中的地方,我不知道如何給路徑特定文件。文件下載總是給我空文件。我的基本sanario是,我點擊一個鏈接(圖片)下載該送我到一個名爲download.php.in該網頁我設置標頭下載點擊文件好像文件通過頭

其他頁面命名網頁上的文件(documents.php)

這是一個鏈接(document.php)

<a href="download.php?title=<?=$arr['title']?> "><img src="images/xl_icn.jpg" alt="" width="19" height="20" /></a> 

這是頭(的download.php)

header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); 

header("Content-Disposition: attachment; filename='".$_GET['title']."'"); 

if(isset($_SESSION)){ 
    header('Location: documents.php'); 
} 

和下載它送我回documents.php網頁,但這些文件之後,我想下載是在文件夾上傳/文件,我不知道如何下載該文件頁在上傳/文件中。

+0

我會建議你使用這個腳本http://www.zubrag.com/scripts/download.php – Kamal 2012-03-29 07:13:18

回答

0

你有一個良好的開端我會修改你的代碼更類似如下:

$path = $_SERVER['DOCUMENT_ROOT']."/uploads/documents/"; 
$fullPath = $path.$_GET['title']; 

if ($fd = fopen ($fullPath, "r")) { 
    $fsize = filesize($fullPath); 
    header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); 
    header("Content-Disposition: attachment; filename='".$_GET['title']."'"); 
    header("Content-length: $fsize"); 
    header("Cache-control: private"); 
    while(!feof($fd)) { 
    $buffer = fread($fd, 2048); 
    echo $buffer; 
    } 
} 
fclose ($fd); 
您將更新

$路徑是什麼文件夾 if語句工作所需的文件調用和回聲在緩衝區風格的頁面內容。

這可以進一步擴大到包括根據擴展來改變內容類型聲明的switch語句。由於您將內容緩存到頁面,因此不能撥打header("Location");。或者由於緩衝,你會得到「因爲頁面內容已經加載而無法發送標題」。

我建議在新窗口或頁面上的IFRAME(包裹在一個div,並可能被隱藏)打開它。您也可以將其包含在document.php文件中,而不是調用單獨的文件。

+0

這麼好的ü親愛的兄弟 – user1210460 2012-03-29 10:22:43

0

您不能從下載頁面重定向回。應的download.php只是做

echo $binary_file_contents;

和退出,無法發送重定向報頭。

您可以在iframe中打開它,這樣你就不會真正離開documents.php頁面

相關問題