2012-01-09 48 views
4

我有一個腳本,當點擊'添加聯繫人'按鈕時,爲員工創建一個vCard。我在一個變量中有這個vCard,但我不確定接下來要做什麼。PHP將文件保存到用戶計算機

我認爲我的第一步應該是將此文件保存在服務器上?

我想只彈出一個框讓人們下載和保存電子名片,所以如果沒有必要的步驟,我想跳過它。

這裏的任何指針都會被appriciated。

謝謝。

+0

PHP可以用來輸出給用戶以外的其他東西。發送正確的文件標題,用戶將被提示下載文件而不是獲取HTML頁面。 – DampeS8N 2012-01-09 16:06:53

+0

此問題的更一般版本是[強制文件下載](http://stackoverflow.com/questions/3718962/force-file-download-in-php)。它不能解決你所有的特定問題,所以我不會給出它可能的重複,儘管這是非常接近的。 – Gordon 2012-01-09 16:33:14

+0

謝謝戈登,我真的不確定我在找什麼,因爲我以前從未這樣做過。即我知道我需要下載一個文件,但實際上我沒有想到如果沒有先保存到服務器並下載,我就不會去做我想做的事情,所以'強制'位甚至沒有輸入我的想法。 – 2012-01-09 17:04:56

回答

7

如果你想有一個文件保存對話框彈出時,有人要求出口網址,你必須使用

header("Content-type:text/vcard; charset=utf-8"); 
header("Content-Disposition: attachment; filename=vcardexport.vcf"); 
echo $vCardData; 

所以,不,你沒有將它保存在服務器上的第一個文件。你可以從變量中提供它。請注意,只要您爲內容類型指定正確的MIME Type,就可以將此方法用於任何其他數據。

另見https://en.wikipedia.org/wiki/VCardhttps://www.ietf.org/rfc/rfc2183.txt

+1

謝謝,這幫助我解決了這個問題,文檔也非常有幫助。 – 2012-01-09 17:03:32

1

嘗試看看內容處置頭:)

它可以強制在客戶端:)文件下載

0

如果您在服務器上的文件,你可以對按鈕的鏈接指向文件

<a href="location of the vcard file"><img src="button.jpg"></a> 

或者您在尋找不同的傳送方式?

+0

當用戶點擊職員配置文件中的「添加內容」鏈接時,會動態創建vCard。目前沒有頁面重新加載,所有事情都是通過AJAX完成的。 – 2012-01-09 16:11:47

1

您只需從PHP輸出vCard,使用響應頭設置正確的內容類型。這應該強制用戶的瀏覽器下載。我用google搜索了一下,發現this example

+0

謝謝你,這個例子在我的網站上幫助了很多人,而不是奇怪的與固定鏈接,這似乎是工作。 – 2012-01-09 17:01:45

2

如果你有你的電子名片在一個變量,那麼你就可以很容易地使用此代碼強制作爲一個下載到客戶端:

<?php 

header('Content-type: text/vcard'); 
header('Content-disposition: attachment;filename=vcard.vcf'); 
echo $vcard_variable; 

?> 
+0

是的,這就是我已經回答;) – Gordon 2012-01-09 16:12:29

+0

這是從一些舊的RFC。我現在將其修改爲正確的內容類型。 – 2012-01-09 16:13:44

+0

謝謝你,我已經使用這些標題,結合我的輸出,現在這個過程正在工作。 – 2012-01-09 17:02:37

相關問題