2012-03-29 15 views
0

すべて私はヘッダを使ってファイルをダウンロードするのに助けが必要ですが、問題はファイルがフォルダ内にあり、その特定のファイルのパスを与える方法を理解できないことです。ファイルのダウンロードは常に私に空のファイルを与えます。私の基本的なsanarioは、私がページ(download.phpという名前の他のページに私を送るpages.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ページに私を送り返すダウンロードした後ではなくファイルであります私はフォルダのアップロード/ドキュメントにダウンロードしたいと思うし、そのファイルをダウンロードする方法を知らないpアップロード/ドキュメントに含まれています。

+0

このスクリプトを使用することをお勧めします。http://www.zubrag.com/scripts/download.php – Kamal

答えて

0

documents.phpページを残していないだろう。

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

$ pathどのフォルダに更新するか ifステートメントは、必要なファイル呼び出しを処理し、バッファースタイルでページコンテンツをエコーし​​ます。

これをさらに拡張して、Content-type宣言を変更する拡張機能に応じてswitch文を含めることができます。コンテンツをページにバッファリングするので、header("Location");に電話をかけることはできません。または、バッファリングのために「ページコンテンツがロードされてからヘッダーを送信できません」というメッセージが表示されます。

私は新しいウィンドウやiframe(divで囲んで隠されている可能性があります)で開くことをお勧めします。別のファイルを呼び出す代わりに、document.phpファイルに含めることもできます。

+0

so nice of u dear bro – user1210460

0

ダウンロードページからリダイレクトすることはできません。 download.phpはちょうど

echo $binary_file_contents;

と出口が、それはヘッダをリダイレクト送信することはできません行う必要があります。

あなたはiframe内にそれを開くことができ、その方法は、あなたが実際にあなたが私はあなたのコードはより以下のようになり、変更となる良いスタートを持って

関連する問題