私のディレクトリからいくつかのパブリックファイルへの直接アクセスをブロックします。たとえば、私はimage.pngというファイルを持っていて、そのファイルをダウンロードするにはcaptchaを埋めなければなりません。キャプチャに失敗した場合、ユーザーがファイルにアクセスできないようにします。 Symfonyでこれを行う方法はありますか?Symfonyを使用して直接ダウンロードをブロックする
答えて
まず、画像ディレクトリ内に.htaccess
というファイルを作成して、ディレクトリ内のファイルに直接アクセスしないようにします。
Deny from All
さて、あなたは簡単にGregwar's CaptchaBundleのようないくつかのバンドルを使用してcaptcha
を統合することができる場所、ファイルをダウンロードしcontroller
て、カスタマイズされたパスを与えます。
captcha検証に成功した場合は、Response
からファイルをダウンロードしてください。
$filename = __DIR__ . "../path_to_file/image.png";
// Generate response
$response = new Response();
// Set headers
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '";');
$response->headers->set('Content-length', filesize($filename));
// Send headers before outputting anything
$response->sendHeaders();
$response->setContent(file_get_contents($filename));
注:コードはテストされていません!
希望すると便利です。
あなたの返信ありがとう!私はそれが正常に動作することができると思うが、ちょうど最後の質問です。私はサーバとしてNginxを使用していますが、htaccessを作成しましたが動作しませんでした。そのNginxサーバや別のものが原因であるかどうかわかりません。 –
'Nginx'サーバ設定ファイルを変更する必要があります。私は 'Nginx'サーバの設定に直接経験はありません。 [変換ツール](https://winginx.com/en/htaccess)、[構成](http://serverfault.com/a/267510/401780)の2つのリンクに従ってください。 – Jeet
- 1. ストリームビデオファイルとブロック直接ダウンロード。
- 2. セレンを使用してURLを直接入力せずにファイルをダウンロードする
- 3. クロムドライバを使用してPDFファイルを直接ダウンロードしてください。
- 4. ブロックの直接アクセス
- 5. 直接ダウンロードファイルをブロックする方法
- 6. カールでリモートファイルを直接ダウンロード
- 7. javacriptを使用して特定の場所に直接ファイルをダウンロード
- 8. クロムエクステンションの直接ダウンロード
- 9. ファイルを直接メモリにダウンロードする
- 10. Javascriptで直接URLでファイルをダウンロードして防止する
- 11. 接続データベースの書き直し - symfony 2
- 12. ファイルをPHP経由で直接ダウンロードしていますか?
- 13. ジップ直接リンクのダウンロードが
- 14. Dropbox API - Force直接ダウンロード
- 15. SQL Developerを使用して直接クエリをCSVにエクスポートする
- 16. ImagePickerControllerを使用して直接 'カメラロール'を表示する方法
- 17. ブラウザを使用してローカルフォルダからファイルを直接アップロードする
- 18. 関数を直接クリックして使用しているAngularjs
- 19. Crystal Reportsに直接ダウンロードするC#
- 20. ファイルの内容が利用可能だがファイルが直接直接にリンクされていない場合は、Javascriptを使用してダウンロードします。
- 21. 使用オブジェクトを直接
- 22. URLを使用して画像を一部のクラウドストレージに直接ダウンロードすることはできますか
- 23. MooTools:responseTextを直接使用する方法
- 24. Watsonナレッジスタジオモデルを直接使用する
- 25. Twitter:スクライブを使用して直接メッセージを送信します。
- 26. Symfony 3 | FOSUser接続されている場合はブロックを登録します
- 27. 関数を直接、ラムダ式として使用する
- 28. デルファイの直接Oracleアクセスコンポーネントを使用して作業する
- 29. 複数の接続を使用してカールでダウンロードする
これらのファイルをパブリックディレクトリの外に移動し、コントローラを渡すことによってそれらを提供することをお勧めします(下記の@ Jeetの回答を参照)。 – Gerry