2012-01-09 7 views
4

「連絡先を追加」ボタンをクリックすると、スタッフのメンバーにvCardを作成するスクリプトがあります。私はこのvCardを変数に入れていますが、次にそれをどうすればいいのか分かりません。PHPがユーザーのコンピュータにファイルを保存する

私は、このファイルをサーバーに保存するのが私の最善のステップだと思いますか?

ボックスのポップアップを作成してvCardをダウンロードして保存できるようにしたいので、手順が必要ない場合はスキップするだけです。

ここでは、任意のポインターが表示されます。

ありがとうございました。

+0

PHPは、出力に使用することができますユーザーにhtml以外のもの適切なファイルヘッダーを送信すると、ユーザーはHTMLページを取得する代わりにファイルをダウンロードするよう求められます。 – DampeS8N

+0

この質問のより一般的なバージョンは[Force File Download](http://stackoverflow.com/questions/3718962/force-file-download-in-php)です。それは本当に境界線ですが、あなたの特定の質問のすべてに対処していないので、私は可能な限り重複してそれを与えることはありません。 – Gordon

+0

ありがとうゴードン、私はこれまでにこれをやったことがないので、私が探していたものは本当にわからなかった。私。私はファイルをダウンロードする必要があることを知っていますが、実際にサーバーに保存せずにダウンロードしないと私が望むことをすることができないと思っていませんでしたので、 '力'ビットは私の考えにも入りませんでした。 –

答えて

7

誰かが輸出URLを要求したときにポップアップするファイル保存ダイアログをしたい場合、あなたは

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

を使用する必要がありますがありませんので、あなたは、最初のサーバー上のファイルとして保存するために持っていけません。あなたは変数からそれを提供することができます。 Content-Typeに対して右にMIME Typeを指定する限り、この方法を他のデータに使用できます。

また、あなたが変数にあなたのvCardを持っている場合、あなたは簡単にこのコードを使用して、クライアントへのダウンロードとしてそれを強制することができhttps://en.wikipedia.org/wiki/VCardhttps://www.ietf.org/rfc/rfc2183.txt

+1

ありがとう、これは私が問題を並べ替えるのに役立ちました、そして、ドキュメントも非常に役立ちます。 –

1

、コンテンツ-dispositionヘッダーを見て試してみてください:)

これは、サーバー上のファイルを持っている場合は、あなただけのボタンにリンクを持つことができ、クライアント:)

0

でファイルのダウンロードを強制することができますそのファイルを指して

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

または別の配信方法をお探しですか?

+0

ユーザーがスタッフプロファイルの[コンテンツを追加]リンクをクリックすると、vCardが動的に作成されます。現在、ページのリロードはありません。すべてがAJAXによって行われます。 –

1

PHPからvCardを出力するだけで、適切なコンテンツタイプを応答ヘッダーで設定できます。これにより、ユーザーのブラウザで強制的にダウンロードが行われます。私はそれをgoogledと発見したthis example

+0

私のサイトのpermalinksと奇妙なことを助けてくれたこの例が役に立ちました。ありがとうございます。これは動作しているようです。 –

2

を参照してください。

<?php 

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

?> 
+0

ええ、それは私がすでに答えたものです;) – Gordon

+0

これは古いRFCのものです。私は正しいコンテンツタイプに修正しました。 –

+0

おかげさまで、これらのヘッダーとアウトプットを組み合わせて使用​​しました。プロセスは現在動作しています。 –

関連する問題