2013-02-25 126 views
0

我有一些PHP代碼的一個問題:如何在Content-Disposition標題中使用帶有特殊字符的文件名?

$link = $_GET['url']; 
$name = $_GET['name']; 
$str = '[wanted-web.ro]'; 

header("Content-Disposition: attachment; filename=$str $name"); 
header("Content-type: audio/mpeg;\r\n"); 
readfile(str_replace(' ', '_', $link)); 

這是我用它來保存文件的代碼。 當我想下載一些文件直接到我的電腦,點綴我用什麼wanted-web.ro停止寫作的信息點後剩下的「 」等這樣的:

[想的Web

問題解決了!

謝謝檸太多的所有..你是真棒。我結合您的意見,其結果是:

header("Content-Disposition: attachment; filename=\"[wanted-web.ro] $name.mp3\""); 

的工作完美!非常感謝所有人。尊重!

+0

你真的想在磁盤上的文件名有'[]單曲? – 2013-02-25 19:28:09

+0

看起來它是在'-'後面停下來的,而不是在'.'後面。 – Barmar 2013-02-25 19:30:17

+0

我想保存像[wanted-web.ro]其餘的信息 ..但只顯示[想要當我想保存在我的電腦文件 – user2108567 2013-02-25 19:34:59

回答

3

報價文件名的頭:

header("Content-Disposition: attachment; filename=\"$str $name\""); 

http://www.ietf.org/rfc/rfc6266.txt

+0

感謝您的評論,但同樣的問題..不顯示其餘的信息後點 – user2108567 2013-02-25 19:31:36

+0

非常感謝你..你真棒..我結合你的意見,結果是:header(「Content-Disposition:attachment; filename = \」[wanted-web.ro] $ name.mp3 \ 「」); ..那個w ork完美!非常感謝所有人。尊重! – user2108567 2013-02-25 19:54:02

+0

酷...我仍然建議不要使用[]方括號......你不知道在某些設備上可能會導致什麼奇怪的問題。可能無關緊要,但可以考慮使用破折號或下劃線。 – 2013-02-25 19:58:56

0

試試這個:

<?php 
$link = $_GET['url']; 
$name = $_GET['name']; 
$str = "[wanted-web.ro]"; 

header("Content-Disposition: attachment; filename=".$str." ".$name); 
header("Content-type: audio/mpeg;\r\n"); 
readfile(str_replace(' ', '_', $link)); 
+0

相同...只顯示我[通緝網絡..其餘的失蹤。我不知道該怎麼做..我花了5個小時來解決這個問題,但徒勞無功:( – user2108567 2013-02-25 19:46:33

+0

嘗試沒有[和],也許這些導致問題以某種方式,正如已經指出的,可能會有問題取決於用戶的操作系統。最好只使用字母,數字,破折號,點號和下劃線來表示文件名。 – 2013-02-25 19:48:13

+0

另外我不認爲'$ name'在這裏做任何事情,因爲它在空間之後; @ MattBall的回答比較好。 – 2013-02-25 19:49:50