2012-03-28 11 views
1

私はブラウザに画像をダウンロードするのではなく、強制的に表示する方法を探しています。PHP強制ブラウザでイメージをダウンロードする、Facebookのように

私は既に多く見て(そして深く)、は標準的な方法ではありません。が適切です。

Facebookがそれを行う方法、それは私は、彼らが最後にパラメータを置くと思いますいくつかのPHPとは:? DL = 1

は、だから、私は

を推測するURL rewrittingと背後確かにPHPのページですあなたは、彼らはそれを行う方法の任意の手掛かりを持っている場合
<a class="itemAnchor" role="menuitem" tabindex="-1" href="http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash4/327910_2733459209258_1040639162_2895571_6924037615_o.jpg?dl=1" rel="ignore"><span class="itemLabel fsm">Download</span></a> 

だから...私の手掛かりは、彼らはおそらくPHPページ

+1

この記事には、次の記事をお読みください。http://www.ryboe.com/tutorials/php-headers-force-download あなたが実際に行っている限り自分で画像を提供する。 – MichD

+0

ありがとう! ;) –

答えて

6

彼らは単に力downloadiのヘッダに何かをするということですNGあなたが他のファイルで行うと同じようにHTTPヘッダを使用して:

<?php 
    $file = 'C:\\test.jpg'; 

    header('Cache-Control: public'); 
    header('Content-Description: File Transfer'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Type: '.mime_content_type($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Length: '.filesize($file)); 

    readfile($file); 
?> 

X-sendfileの大きなファイルや忙しいWebサーバの場合

、私はX-SendFileヘッダの使用を示唆して代わりのでしょうreadfile()関数を使用します(Apacheにはmod_xsendfileがインストールされている必要があります)。

header('X-Sendfile: '.$file); 
    //readfile($file); 

あなたが気づいたよう.htccess、JPGファイルでのFacebookのURLのポイントではなく、PHPの1。 このトリックを行うには、.htaccessファイルにURLの書き換えが必要です。

次のようなものが動作するはずです(実際のURLを使用して、$_SERVERの内容を確認する必要があります)。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 
+1

ヘッダーには何を入れますか? –

+0

私はこれを使うべきです:http://tools.ietf.org/html/rfc2616#section-19.5.1 as attachement? –

+0

ahahaあなたは私の "受け入れる答え"を持って競争していますあなたは私があなたに5分以上待たなければならない最速でした あなたの答えはもう一度完璧なおかげさまです:) –

2

自分のheaderContent-Disposition変数が定義する必要があります:

<?php 
    header("Content-Disposition: attachment; filename='downloaded.png'"); 
?> 
1

は、あなたがファイルを送信前に適切なヘッダを設定することで、これが実現できます。特にContent-TypeをコンテンツタイプとContent-Disposition: attachment; filename=<yourfilename>に設定できます。

IEにはいくつかの問題があります。詳細についてはthis answerをチェックしてください。

+0

okありがとう、私は本当にそれを見ました長い時間がとても素晴らしい! ;) –

関連する問題