我之前已经提过一个问题,但我想我错过了这一点,所以我要再发一次。
我正在使用标题Content-Disposition。
我以前使用的代码是这样的:
header("Content-Disposition: attachment; filename='{$name}'");
它返回:
内容 - 处置附件; filename ='Bassnectar - Bass Head Official.mp3'
注意引号前后的空格。这是一个问题,因为它将扩展名从“.mp3”更改为“.mp3”,这被识别为不同的文件。必须有一些方法来解决这个问题。我改变了一切,我用Google搜索了一切。我不知道还剩下什么?
答案 0 :(得分:1)
在放入标题之前,您应该对其进行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}\"");
答案 1 :(得分:0)
试试这些:
<?php
$str = preg_replace('/\s\s+/', ' ', $str);
?>
或
<?php
$string = trim(ereg_replace(' +', ' ', $string));
?>
或
<?php
$name=preg_replace('/\s+/','',$name);
?>
这最后一个对您来说可能是最好的。
那些将删除字符串中的空格,只需确保有相应的文件匹配,