2013-07-07 118 views
-2

在我的網站中,我希望用戶在單擊按鈕時下載音樂文件。我遇到的問題是,單擊按鈕時,下載將開始,但只有總共4 MB的506 KB下載,打開時顯示不支持的格式。我用這個PHP下載腳本和HTML的形式進行下載:PHP下載腳本

HTML表單

<FORM ACTION="download.php" METHOD=POST> 
    <INPUT TYPE="hidden" NAME="music" VALUE= "music/<? print $file; ?>" > 
    <INPUT TYPE="SUBMIT" NAME="download" VALUE="Download"> 
</FORM> 

PHP下載腳本

<?php 
$FileName = $_POST["music"]; 
$FilePath = "music"; 
$size = filesize($FilePath . $FileName); 
header("Content-Type: application/force-download; name=\"". $FileName ."\""); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ". $size .""); 
header("Content-Disposition: attachment; filename=\"". $FileName ."\""); 
header("Expires: 0"); 
header("Cache-Control: private"); 
header("Pragma: private"); 
echo (readfile($FilePath . $FileName)); 
?> 

能否請您指出我的問題?在這樣一個位置

+0

查看下載的文件,看看是否有任何錯誤。 –

+1

如果你使用4個空格而不是'\''格式化代碼,你將不會得到中間的白線,讀起來更容易;)(或者你選擇代碼並使用'{}'按鈕 – Nanne

+0

是的文件沒有播放..... KK將下次做:) –

回答

1

你的代碼是尋找一個文件:

musicmusic/file.mp3 

假設你的文件實際上是存儲在類似music/file.mp3,和可變$file包含有類似file.mp3,要替換:

<INPUT TYPE="hidden" NAME="music" VALUE= "music/<? print $file; ?>"> 

有:

<INPUT TYPE="hidden" NAME="music" VALUE= "<? print $file; ?>"> 
$FilePath = "music"; 

有:同樣

$FilePath = "music/"; 

(或刪除$FilePath全部)

,我建議你檢查$_POST["music"]不包含,然後更換這個或者在讓任何人從服務器上下載任何文件之前從/開始。

+0

您是否嘗試在二進制編輯器中打開文件以檢查是否沒有PHP錯誤消息*(或嘗試下載'.txt'文件並檢查其內容)*? –

+0

感謝他的工作:))我把你的建議改變了每一個腳本,它的工作感謝人... :) –

+0

@Nettaimanoj:如果你解決了這個問題,我的答案幫助你,請考慮[接受答案](http://meta.stackexchange.com/a/5235/224130)。謝謝! –