我想阻止直接訪問我的目錄中的一些公共文件。例如,我有文件image.png,我必須填寫驗證碼才能下載該文件,如果驗證失敗,我不希望用戶可以訪問該文件。在Symfony中有沒有辦法做到這一點?使用Symfony阻止直接下載
0
A
回答
2
首先,在image目錄內部創建一個.htaccess
文件,以防止直接訪問目錄中的文件。現在
Deny from All
,給予個性化道路,通過controller
要下載的文件,在那裏你可以很容易地通過使用一些捆綁像Gregwar's CaptchaBundle整合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));
注意:代碼未經測試!
希望這會有所幫助!
+0
感謝您的回覆!我認爲它可以正常工作,但只是最後一個問題。我使用Nginx作爲服務器,我創建了htaccess但它不起作用,我不知道它是由於Nginx服務器還是其他原因 –
+0
您必須爲此更改Nginx服務器配置文件。我沒有設置Nginx服務器的直接經驗。您可能想要關注這兩個鏈接:[轉換工具](https://winginx.com/en/htaccess),[配置](http://serverfault.com/a/267510/401780) – Jeet
相關問題
- 1. 如何阻止直接下載文件
- 2. html5視頻播放器(無直接來源)阻止下載
- 3. 阻止favicon.ico下載
- 4. 非阻止下載
- 5. 如何在使用IHttpHandler下載時阻止導航被阻止?
- 6. 阻止用戶直接訪問頁面
- 7. 防止直接在wordpress網站下載
- 8. AngularJS阻止HTML5下載鏈接開始下載
- 9. 阻止視頻被下載
- 10. 阻止通過URL下載
- 11. FTP下載阻止網站
- 12. 使用chromedriver直接下載PDF文件
- 13. 阻止用戶從Python下載文件?
- 14. Laravel阻止直接訪問ajax路由
- 15. 如何阻止子域直接訪問
- 16. 阻止codeigniter中的直接url訪問
- 17. 阻止接口,直到完成操作
- 18. Symfony 2阻止併發性
- 19. JMapViewer.jar直接下載鏈接?
- 20. 使用.htaccess文件阻止對目錄的直接訪問
- 21. 使用nginx阻止直接訪問php文件(僅重寫)
- 22. 防止用戶直接從網站下載文件,如何?
- 23. 直接在Symfony的
- 24. 截取下載鏈接點擊並阻止默認下載對話框
- 25. 如何阻止ftp在python下載?
- 26. 如何阻止每次下載gradle
- 27. 如何阻止JS下載未完成
- 28. 爲什麼javascript阻止並行下載?
- 29. 下載庫:「SVN合作......」阻止
- 30. Internet Explorer阻止下載文件
我真的會建議將*這些文件移動到公共目錄之外,並且只通過傳遞控制器來提供這些文件(請參閱下面的@Jeet的答案)。 – Gerry