2011-12-01 71 views
1

我有下面的代碼來打開一個CSV文件,但由於某些原因,它似乎將shopkeeper/89137.csv轉換爲shopkeeper_89137.csv。它保持打開一個空白的csv文件顯然是因爲它正在尋找一個不存在的文件。引用文件以打開文件的正確方法是什麼?PHOP頭文件 - 從PHP腳本打開CSV文件

  header("Content-type: text/csv"); 
      header("Content-Disposition: attachment; filename=shopkeeper/89137.csv"); 
      header("Pragma: no-cache"); 
      header("Expires: 0"); 
+0

嗯,你說的是「打開一個CSV文件」,但你實際上是將它傳送到客戶端的瀏覽器...... – Leon

+0

據我所知,這些是發送到瀏覽器的標題,指示文件的內容正在發送,而不是內容本身。你是以某種方式輸出內容嗎?文件名就是瀏覽器在下載時使用的文件的名稱。 –

+0

@BrendanBullen「表示文件的內容正在發送,而不是內容本身」 - 必須閱讀幾次;-) – Leon

回答

1

的標題應該只包括正在發送的文件的基本名稱。在事物的接收端,它認爲你想要傳遞一個名爲「shopkeeper/89137.csv」的文件,在大多數操作系統中,文件名包含非法字符(/),所以它會得到轉換爲下劃線。

你或許應該調整行改爲:

header("Content-Disposition: attachment; filename=89137.csv");

1

實際上,/字符是保留的,不能用作文件名!

我會重新考慮你的命名方案......

2

引用文件路徑是不是在HTTP報頭的理想選擇。您必須僅引用文件名「89137.csv」,然後通過在文件打開功能中將「shopkeeper /」附加到文件名中來處理文件。請記住,您仍然可以在標題字符串參數中使用變量。

+0

,你根本無法引用文件路徑。此外,這些標題將在用戶的瀏覽器中打開一個SaveAs對話框,那麼OP如何使用腳本「在您的文件打開功能中追加店主/文件名」呢? – Leon