-2

在我的网站中,我希望用户在单击按钮时下载音乐文件。我遇到的问题是,当单击按钮时,下载开始,但仅下载了总共 4 MB 的 506 KB,并且当它打开时显示不受支持的格式。我使用这个带有 html 表单的 php 下载脚本来进行下载:

HTML 表格

<FORM ACTION="download.php" METHOD=POST>
  <INPUT TYPE="hidden" NAME="music"    VALUE= "music/<? print $file; ?>"  >
  <INPUT TYPE="SUBMIT" NAME="download"  VALUE="Download">
</FORM>

PHP 下载脚本

<?php
$FileName = $_POST["music"];
$FilePath = "music";
$size = filesize($FilePath . $FileName);
header("Content-Type: application/force-download; name=\"". $FileName ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". $FileName ."\"");
header("Expires: 0");
header("Cache-Control: private");
header("Pragma: private");
echo (readfile($FilePath . $FileName));
?>

你能指出我的问题吗?

4

1 回答 1

1

您的代码正在以下位置查找文件:

musicmusic/file.mp3

假设您的文件实际上存储在类似的内容中music/file.mp3,并且变量$file包含类似的内容file.mp3,您想要替换:

<INPUT TYPE="hidden" NAME="music" VALUE= "music/<? print $file; ?>">

和:

<INPUT TYPE="hidden" NAME="music" VALUE= "<? print $file; ?>">

然后替换这个:

$FilePath = "music";

和:

$FilePath = "music/";

(或完全删除$FilePath

另外,我建议您在让任何人从您的服务器下载任何文件之前检查$_POST["music"]不包含..或开头。/

于 2013-07-07T08:42:08.067 回答