2014-02-15 29 views
0

我們正在使用此代碼中的javascript通過IFRAME下載文件,而且運作良好:文件下載的iframe絕對VS相對地址

function initDownload(){ 
var path = "path/to/song.mp3", name = "song.mp3"; 
document.getElementById('myiframe').src = "dl.php?path="+path+"&name="+name; 
} 

<iframe id="myiframe" style="position: absolute; left: -10000px; display: none;" src=""></iframe> 
<a href="#" onClick="initDownload(); return false;">download</a> 

這裏是dl.php文件:

<?php 
header("Content-Type: application/octet-stream"); 
if(isset($_GET['name'])){ 
    $name = $_GET['name']; 
    header("Content-Disposition: attachment; filename=\"$name\""); 
} 
if(isset($_GET['path'])){ 
    $path = str_replace(' ', '%20', $_GET['path']); 
    readfile($path); 
} 
exit; 

>

歌曲路徑設置爲絕對網址,效果很好。曾經有過這種情況沒有奏效,經過一些測試後,事實證明,只有相對的網址被接受(工作)在特定的服務器上。 是否有一個原因,爲什麼絕對網址不會在一些服務器上工作,也許一些PHP設置或什麼?

回答

0

你應該檢查,你在做什麼dl.php文件與路徑,這裏htmljavascript將工作在所有服務器上的方式相同。相當確切的問題是php到達文件的方式。

+0

感謝您的回答。我編輯過這個帖子來添加php文件內容。 – Toniq

+1

正如我在想,你的PHP不好。您應該嘗試添加'$ root = realpath($ _ SERVER [「DOCUMENT_ROOT」]);'以文件名或類似的方式來檢測文件的真實絕對路徑。 – mrserge

+0

但我設置路徑與JavaScript文件和路徑是正確的,如果我加載(例如MP3)文件在瀏覽器中播放。儘管如此,你可以告訴我php代碼在添加後應該是什麼樣子? – Toniq