Javascript 文件下载iframe绝对地址与相对地址
我们在javascript中使用这段代码通过iframe下载文件,效果很好:Javascript 文件下载iframe绝对地址与相对地址,javascript,download,Javascript,Download,我们在javascript中使用这段代码通过iframe下载文件,效果很好: 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;
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>
函数initDownload(){
var path=“path/to/song.mp3”,name=“song.mp3”;
document.getElementById('myiframe').src=“dl.php?path=“+path+”&name=“+name;
}
下面是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;
歌曲路径设置为绝对url,效果良好。曾经有过这样一种情况:这种方法不起作用,经过一些测试,结果证明在特定的服务器上只接受(起作用)了相对url。
是否有一个绝对url在某些服务器上不起作用的原因,可能是一些php设置或其他什么?您应该检查,您在dl.php文件中使用path执行的操作,这里的html
和javascript
在所有服务器上的工作方式相同。舒尔的问题在于php
访问文件的方式。谢谢您的回答。我编辑了这篇文章来添加php文件内容。正如我所想,你的php不好。您应该尝试添加$root=realpath($\u SERVER[“DOCUMENT\u root]”)
to filename或类似的东西来检测文件的真正绝对路径。但是我用javascript设置了文件的路径,如果我在浏览器中加载(例如mp3)文件,则该路径是正确的。不过,你能告诉我添加后php代码应该是什么样子吗?php文件在mp3文件所在的目录中吗?你需要在mp3文件所在的目录中添加另一个php文件,或者构建代码,以便添加绝对路径。示例:/dir/dl.php/dir/mp3/play.mp3然后您需要在dl.php中生成realpath并添加到realpath/mp3/JavaScript,因为它不是基于服务器的,所以无法获取绝对路径。