下载的文件扩展名有一个“;”在里面

时间:2013-06-14 16:15:17

标签: php

我正在使用强制下载脚本来避免在我的网站中播放mp3文件。 它适用于我的电脑,但在我的Android手机中,下载无法启动! 在我的Android平板电脑中,文件扩展名变为filename.mp3; 所以文件必须重命名才能工作!!

这里有什么问题?

<?php
$file=str_replace("\0", null, htmlspecialchars($_GET['file']));
$name = $_GET['name'];
header ("Content-type: octet/stream");
header ("Content-disposition: attachment; filename=".$name.";");
readfile($file);
exit;
?>

我做了一个小改动,它在平板电脑上工作得很好。 但我的Android手机没有下载它。

header("Content-Disposition: attachment;filename = $name");

4 个答案:

答案 0 :(得分:2)

您的文件名标头看起来不正确。试试这个:

header('Content-Disposition: attachment; filename="'.$name.'"');

请参阅: http://php.net/manual/en/function.header.php

答案 1 :(得分:1)

文件名末尾有一个分号:

.";");

答案 2 :(得分:0)

删除文件名后面的;。基于the spec只是引用的字符串

标题应如下所示(注意文件名前面的空格和文件名周围的引号)

header("Content-Disposition: attachment; filename=\"".$name."\"");

答案 3 :(得分:0)

如果您将其更改为标题('Content-disposition:attachment; filename =“'。$ name。'”'),它应该有效。

如果你看一下RFC 2616,你会在19.5.1中注意到分号只是将处理类型(即“附件”)与文件名分开,文件名应该是带引号的字符串。