Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文件下载iframe绝对地址与相对地址_Javascript_Download - Fatal编程技术网

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;

我们在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; 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,因为它不是基于服务器的,所以无法获取绝对路径。