在移动设备上强制通过iframe下载

时间:2012-03-12 15:44:47

标签: php iframe mobile download

我知道这方面有很多问题,但我没有发现特定的移动设备。

由于某些原因,我无法在'main'页面上使用php,所以我通过jQuery $ .get

完成了

它工作正常,除了下载,我使用1x1 iframe开始下载,工作正常..除了iphone + galaxy s2(我在atm测试的唯一2个)

我在iframe调用的页面上的代码:

<?

$email = mysql_escape_string($_GET['email']);
$code = mysql_escape_string($_GET['code']);

include('xxxxx.php');
mysql_select_db($xxxxx);
$now = strtotime(date('c'));

$sql = mysql_query("SELECT * FROM `xxxxx` WHERE `email` = '$email' AND `code` = '$code'");
if(mysql_num_rows($sql) == 0) { echo "<script>alert('Incorrect Code');</script>"; die; }
$query = mysql_fetch_object($sql);
if(strtotime($query->expires) > $now) {

    $filename = "theused.wav";

    header('Content-type: audio/x-wav');
    header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
    header('Content-Transfer-Encoding: binary');
    readfile('http://www.something.co.uk/xxx/' . $filename);
} else {
    echo "<script>alert('Code Expired');</script>"; die;
}
?>

直接访问此页面时,下载工作正常,而不是在iFrame

上打开时

甚至更奇怪......只是尝试做一个window.location,当连接到wifi时失败并说下载不成功,3g似乎工作正常。

1 个答案:

答案 0 :(得分:0)

也许您可以先尝试检查(file_exists($ path_to_file)),以确保您的绝对路径符合您的期望。如果一切顺利,这也意味着它可以找到文件,但标题似乎不适用于手机。这可能表明它不允许在移动浏览器中设置这些标头。

如果是这种情况,您可能需要寻找不同的方法。