2012-02-12 59 views
4

這是什麼適當的語法?變量PHP下載頭文件名?

header('Content-Disposition: attachment; filename="{$_SESSION['name']} . '.txt'); 

該文件的工作原理雖然只適用於「查看源代碼」(HTML未格式化但包含正確的換行符)。

<?php 
header("Content-type: text/html"); 
session_start(); 
    if(file_exists("chat") && filesize("chat") > 0){ 
     $handle = fopen("chat", "r"); 
     $contents = fread($handle, filesize("chat")); 
     fclose($handle); 
     ob_start(); 
$download = strip_tags($contents, '<br>'); 
$processed = preg_replace('#<br\s*/?>#i', "\n", $download); 
echo $processed; 
$var = ob_get_clean(); 
echo $var; 
    } 
?> 

$_SESSION['name']變量是一樣的東西guest_158512,如果你查看我試圖保存頁面的源代碼,它擁有所有的換行符。如何使用正確的語法將當前頁面保存爲guest_158512.txt

+0

'filename =「{$ _ SESSION ['name']}。'.txt''你想關閉'''嗎? – Cheery 2012-02-12 06:25:28

回答

6

你的問題在於你試過使用單引號。單引號不會在PHP中插入變量。

您也無法正確終止字符串,可能是因爲在其中放置更多單引號。嘗試:

header('Content-Disposition: attachment; filename="'.$_SESSION['name'].'.txt"'); 

Kolink也points out,你應該使用Content-Type: text/plain服務於純文本的非HTML文件。

+0

感謝所有發佈的人。該文件現在正確命名,並保存正確。如果使用記事本打開文件,則不會保存任何行。但是,如果您打開MS Word,DreamWeaver或任何其他「應用程序」,那麼這些行就會停留在那裏。我不知道如何解決這個問題。編輯:\ r \ n而不是\ n? – ionFish 2012-02-12 06:37:44

+0

@mesh Unix行尾('\ n')不由記事本處理,它需要Windows行尾('\ r \ n')。 – Borealid 2012-02-12 06:41:35

+0

得到了我自己的工作,但它有很好的記錄在這裏爲未來的用戶。 – ionFish 2012-02-12 06:42:34

0

你很近。單引號,你可以做到以下幾點:

header('Content-Disposition: attachment; filename="' . $_SESSION['name'] . '.txt"'); 
+0

最好留下引號(當然加上文件名的空格)。以防萬一:) – Cheery 2012-02-12 06:27:13

+0

好點,謝里。 – Josh 2012-02-12 06:28:56

1
header("Content-Disposition: attachment; filename=\"".$_SESSION['name'].".txt\""); 
header("Content-Type: text/plain"); 

以供將來參考,使用適當的代碼編輯器如記事本++會告訴你,你的報價是嚴重不匹配。