因此,当用户下载我目前拥有的文件时,它会将歌曲名称拉为类似的内容。
$songs = file_get_contents('https://api.soundcloud.com/tracks/'.$id.'/stream?client_id='.$myID.'');
$filename = './tmp/' . stripslashes(htmlspecialchars($songTitle)) . '.mp3';
$filenames = '/tmp/' . stripslashes(htmlspecialchars($songTitle)) . '.mp3';
$trying = '' . stripslashes(htmlspecialchars($songTitle)) . '';
$songname = stripslashes(htmlspecialchars($songTitle));
file_put_contents($filename, $songs);
<form method="POST" action="http://example.com/download.php" accept-charset="utf-8">
<input type="hidden" name="file_name" value="<?php print $trying; ?>" />
<input type="hidden" name="song_name" value="<?php print $songname; ?>" />
<input type="Submit" class="btn btn-success" value="Download Song" />
</form>
然后在download.php文件中我有以下内容。
$file = 'tmp/' . $_POST['file_name'] . '.mp3';
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.$file);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
header("Content-Type: audio/mp3");
readfile($file);
当用户下载文件时,它会显示出类似tmp-song-artist-song-name.mp3
的内容,我们非常感谢您的帮助!
编辑:
当我将header('Content-Disposition: attachment; filename='.$file);
行更改为header('Content-Disposition: attachment; filename='.$songtitle);
$songtitle = $_POST['song_name'];
它似乎解决了标题问题,但却创造了一个全新的问题,这不是我们想要的。
答案 0 :(得分:1)
您使用了错误的Content-Disposition标头。在您的第一篇文章中,您使用了完整的文件名以及tmp /,并且在编辑后,您在结尾处输入了.mp3。我已经更正了下面的下载文件代码:
$file = 'tmp/' . $_POST['file_name'] . '.mp3';
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.$_POST['file_name'] . '.mp3');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
header("Content-Type: audio/mp3");
readfile($file);
答案 1 :(得分:-1)
从文件名中删除'tmp /'部分。
header('Content-Disposition: attachment; filename=' . str_replace('tmp/', '', $file));