我之前问过一个问题,但我想我没有抓住要点,所以我要再发一次。
我使用的是标题Content-Disposition。
我以前这样做的代码是这样的:
header("Content-Disposition: attachment; filename='{$name}'");
它返回这个:
内容处置附件;filename="Bassnearr-低音头官方.mp3"
注意引号前后的空格。这是一个问题,因为它将扩展名从".mp3"更改为".mp3",后者被识别为不同的文件。必须有办法解决这个问题。我改变了一切,我在谷歌上搜索了一切。我不知道还能做什么?
在放入标头之前,应该对额外的空白进行url编码和修剪。
$name = rawurlencode(trim($name));
header("Content-Disposition: attachment; filename='{$name}'");
最终解决方案
$name = $extract['original_name'];
$name2 = urlencode(trim($name));
$name3 = str_replace("+", " ", $name2);
$quote = '"';
header("Content-Disposition: attachment; filename=$quote{$name3}$quote");
我很确定你可以清理这个:
$name = $extract['original_name'];
$name = urlencode(trim($name));
$name = str_replace("+", " ", $name);
header("Content-Disposition: attachment; filename='"{$name}'"");
而且,如果urlencode似乎没有什么不同,我很确定你可以这样做:
$name = $extract['original_name'];
$name = trim($name);
header("Content-Disposition: attachment; filename='"{$name}'"");
试试这些:
<?php
$str = preg_replace('/'s's+/', ' ', $str);
?>
或
<?php
$string = trim(ereg_replace(' +', ' ', $string));
?>
或
<?php
$name=preg_replace('/'s+/','',$name);
?>
最后一个可能最适合你。
这些将从字符串中删除空格,只需确保有相应的文件匹配即可,