php - 从 header 下载时缺少文件扩展名

标签 php apache .htaccess http-headers

我正在使用下面的代码下载一个文件,它运行良好,但问题是文件扩展名丢失,即使在紧张的下载之后也是如此。我已尝试将其更改为其他 MIME 类型,可能是什么问题,我该如何解决?

header('Content-Type: audio/mp3');
header("Content-Disposition: attachment; filename=$row[3]");
header("Content-Length: ".filesize("$row[1]$row[2]"));
$fp = fopen("$row[1]$row[2]", "r");
fpassthru($fp);
fclose($fp);

注意:$row 数组中的值没有问题。

最佳答案

这里是瞎猜的,会不会是文件名里面有空格?在这种情况下,您可以尝试在文件名周围添加双引号,有关于省略空格后的部分的报告(例如此处:http://kb.mozillazine.org/Filenames_with_spaces_are_truncated_upon_download)

编辑:如评论中所述, header 未返回扩展名,因此在后端手动添加 .mp3 扩展名可解决此问题。

关于php - 从 header 下载时缺少文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004231/

相关文章:

php - 为什么我的文件夹在网络上不可见?或上传能力?

java - 不推荐使用 sslcontextbuilder 和 SSLContexts

apache - 如何强制 http ://in htaccess?

php - 在 php 中循环时显示输出

php - Laravel:Mediable 迁移错误语法错误或访问冲突:1071 指定的 key 太长;最大 key 长度为 1000 字节

php - 仅显示查询表中存在的 MySQL 列

javascript - 如何获取元素:hover background with javascript and CORS

php - 从 MySql - PHP 中的 30 个表中选择

php - 如何在 php 中更改单元测试日期函数的当前时间

php - 将 ?id=__ 重写为存储在数据库行中的页面标题