【发布时间】:2023-03-14 01:16:01
【问题描述】:
我有一个指向我网站上的音乐文件的链接,现在文件的名称在上传时被散列,所以我想使用我存储在数据库中的原始文件名,我做了一些研究并发现'a' 标签的这个新的 'download' 属性,但仅适用于更高版本的 firefox 和 chrome,它在 ie 中不起作用,也不适用于我使用的下载管理器,所以我在网上查了一下,发现关于我然后实施的标题。我现在可以更改文件名,但无论我尝试下载的音乐文件如何,音乐文件都会继续保存为“11.35kb”文件大小。这是我的代码:
if (isset($_REQUEST['download']))
{
$download_id = $_REQUEST['download'];
$db = new MysqliDatabase(ConnectionString);
$result = array();
$result = $db->query_one("SELECT TrackID, ma.ArtisteName, FeaturedArtistes,
mc.Category, TrackName
FROM `musictracks` mt
LEFT JOIN `musiccategories` mc
ON mt.CategoryID = mc.CategoryID
LEFT JOIN `musicartistes` ma
ON mt.ArtisteID = ma.ArtisteID
WHERE mt.TrackID = '$download_id';");
$filename = $result->TrackPath;
$outputfilename = $result->ArtisteName . ' ft. ' . $result->FeaturedArtistes . ' - ' . $result->TrackName . '.mp3';
header("Content-Type: audio/mpeg");
header("Content-Disposition: attachment; filename=\"" . basename($outputfilename) . "\";" );
header("Content-Transfer-Encoding: binary");
readfile("$filename");
}
这是下载链接:
<a href="<?php echo 'musicdownload.php?download='. $row->TrackID ?>" ><img src="images/download.png" alt="download" title="download" width="14" height="14" /></a>
【问题讨论】:
-
11.35kb 文件包含什么?
-
在服务器上放一些mp3文件并尝试直接下载 - 可能服务器有问题。并检查您的
$filename- 也许这不是您所期望的。 -
它被保存为音乐文件,但是当我尝试播放它时它不起作用。
-
在记事本中打开这个文件——里面可能是带有错误信息的文本/html
-
所以请阅读 - 将 .mp3 更改为 .html 并在浏览器中打开。可能有错误信息