私はユーザーがサーバーに文書をアップロードできるようにしています。しかし、私は、ファイルがどこに格納されているかを明らかにしたくない。私は何をすることができますが、まだファイルを取得することができますが、ファイルの場所を見ることなく。ファイルの場所が表示されないようにするにはどうすればよいですか?
答えて
あなたはこれを達成するためにPHPのクエリを使用することができ、あなたは、次のURLを使用して言うことができます:files.phpで
http://mysite.com/files.php?file=xyz.pdf
あなたが得る変数ファイルをチェックして、ファイルを取得し、ハードコーディングされた機能を持たせることができます。ヘッダーを使ってダウンロードを強制するか、ファイルをvarに読み込んで内容をページに出力することで、これを行うことができます。たとえば、pdfファイルを読み込んでページに印刷するのと同じことは、ファイルにリンクすることと同じです。
警告:ヘッダーを使用すると、ファイル以外のページには何も印刷されません。また、ファイルを読み込んで印刷しても、エンドユーザがファイルのソースであるgobbly goop(jpgまたはpdf)を取得しないようにするには、ヘッダーを削除することをお勧めします。
ああ、私はヘッダーの警告を忘れていました.AdobeがPDFを作成したアプリケーションとユーザーがアップロードしているブラウザに応じて、PDFのオープンソースのISOを作成して以来、 PDFは、ヘッダから何もすることになります。一生懸命ヘッダタイプにアップロードセクションをコーディングするように注意してください
'application/pdf', 'application/x-download','application/octet-stream','application/octet','binary/octet-stream'
、私はこの質問がダウンロードについてです知っているが、私はちょうど私がそこにそれを投げるだろうと思いました。ダウンロードのためのヘッダーを使用することも重要ではありません。私は単純に標準アプリケーション/ pdfを使用します。
実際のファイルにマップできるランダムな一意のIDを使用して格納し、実際のファイルでreadfile()
のスクリプトを使用して配信します。
http://php.net/readfile文書には強制的にダウンロードする方法の例もあります。
この藤堂いくつかの方法がありますが、私のようなユーザー名またはパスワードを使用することができだから私のリンクは、URL内のhttp://example.com/files/filename.zip
余分なパラメータのようになります
http://example.com/files/bob/filename.zip
http://example.com/files/18d52c/filename.zip
をその後、データベースと照合して、支払い後に即座にダウンロードするのと同じように、ユーザーがその特定のファイルをダウンロードできるかどうかを確認できます。
の.htaccess
RewriteRule ^files/(.*)$ serve.php?file=$1
serve.php
<?php
if(isset($_GET['file'])){
$file=basename($_GET['file']);
//Protect the index.php && serve.php
if(basename($_GET['file'])=='index.php' || basename($_GET['file'])=='serve.php'){
header("HTTP/1.1 403 Forbidden");die();
}
$downloadFolder="original_location/";
if(file_exists($downloadFolder.$file)){
$fsize = filesize($downloadFolder.$file);
$ctype=finfo_file(finfo_open(FILEINFO_MIME_TYPE), $downloadFolder.$file);
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false) {
header("Content-Type: application/force-download");
header('Content-Description: File Transfer');
}else{
header("Content-Type: $ctype");
}
header("Content-Disposition: attachment; filename=\"".basename($file)."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$fsize);
ob_clean();
flush();
readfile('original_location/'.$file);
}else{
header("HTTP/1.0 404 Not Found");
}
die();
}
header("HTTP/1.0 404 Not Found");
?>
original_location/index.phpを
header("HTTP/1.1 403 Forbidden");
あなたはmimeタイプのビジネス全体をhttp://www.php.net/manual/en/ref.fileinfo.phpに置き換えることができます... –
ありがとうございました。あなたの提案を追加しました。 –
ローレンスの+1美しい実装、それはすべての基本とエラーのシナリオをカバーします。私は今私の答えを恥じています。私は基本的に彼に同じことを話しましたが、あなたのコードはすべての基盤をカバーしています。もし気にしないなら、私のスニペットライブラリに追加したいと思います。 。 – BrandonS
- 1. .txtファイルが直接表示されないようにするにはどうすればよいですか?
- 2. jabber.elにユーザーアイコンが表示されないようにするにはどうすればよいですか?
- 3. QApplicationがドックに表示されないようにするにはどうすればよいですか?
- 4. 「インクルードファイル」がユーザーに表示されないようにするにはどうすればよいですか?
- 5. Powershell:エラーがスクリプトに表示されないようにするにはどうすればよいですか?
- 6. サブディレクトリ名がURLに表示されないようにするにはどうすればよいですか?
- 7. スクロールバーがdataTableに表示されないようにするにはどうすればよいですか?
- 8. 複数のLightFaceが表示されないようにするにはどうすればよいですか?
- 9. デフォルトのCallOutViewが表示されないようにするにはどうすればよいですか?
- 10. サーバファイルがオンラインで表示されないようにするにはどうすればよいですか?
- 11. Javaでボタンサラウンドが表示されないようにするにはどうすればよいですか?
- 12. 実行タイムアウトエラーメッセージが表示されないようにするにはどうすればよいですか?
- 13. 隠しシステムファイルが表示されないようにするにはどうすればよいですか?
- 14. デバッグメッセージが表示されないようにするにはどうすればよいですか?
- 15. ファイルのフォルダの場所をJavaで表示するにはどうすればよいですか?
- 16. 現在の場所が表示されないようにmapviewを設定するにはどうすればよいですか?
- 17. アンドロイド1.6にソフトキーボードが表示されないようにするにはどうすればいいですか?
- 18. アンドロイドエミュレータのキーボードが表示されないようにするにはどうすればいいですか
- 19. JavaScriptのプロンプトが表示されないようにするにはどうすればいいですか?
- 20. ソフトキーボードが表示されないようにするにはどうすればいいですか?
- 21. 異なる場所に検証エラーメッセージを表示するにはどうすればよいですか?
- 22. Javascriptフィルターがグリッドビューヘッダーを表示させないようにするにはどうすればよいですか?
- 23. 大きな画像がGUIに表示されない場合はどうすればよいですか?
- 24. FBにすでにログインしている場合、Facebookのログインポップアップが表示されないようにするにはどうすればよいですか?
- 25. gulp-typescriptにエラーが表示されるようにするにはどうすればよいですか?
- 26. ブラウザでPHPエラーが表示されるようにするにはどうすればよいですか?
- 27. 隠しdivが常に同じ場所に表示されるようにするにはどうすればよいですか?
- 28. ウェブサイトが完全に消費され、別の場所でミラーリングされないようにするにはどうすればよいですか?
- 29. gmaps4railsにマーカー付きのユーザーの場所を表示するにはどうすればよいですか?
- 30. 現在の通りの場所をGoogleマップに表示するにはどうすればよいですか?
なぜ彼らはファイルが格納されている場所を確認しますか? – Mike
ドキュメントを提供するにはダウンロードするリンクがあるでしょうか? – KPO
アップロード(サーバーにファイルを送信しているクライアント)またはダウンロード(サーバーからファイルを取得しているクライアント)について話していますか? – Mike