ホームページ  >  記事  >  バックエンド開発  >  ファイルのダウンロードを実装するための PHP コード (複数のファイル形式)

ファイルのダウンロードを実装するための PHP コード (複数のファイル形式)

WBOY
WBOYオリジナル
2016-07-25 08:58:521058ブラウズ
  1. /**

  2. * ファイルのダウンロード
  3. * PDF、zip、gif、jpg、mpeg、word などを含む複数のファイル形式。
  4. * bbs.it-home.org を編集
  5. */
  6. function dl_file($file){
  7. //まず、ファイルが存在するかどうかを確認します
  8. if (!is_file($file) ) { die("404 ファイルが見つかりません!"); }

  9. // ファイルに関する関連情報を収集します

  10. $len = filesize($file);
  11. $filename = Basename($file);
  12. $file_extension = strto lower(substr(strrchr($filename,"."),1));< ;/p>
  13. //これにより、Content-Type がファイルの適切な設定に設定されます

  14. switch( $file_extension ) {
  15. case "pdf": $ctype="application/pdf"; Break;
  16. case "exe": $ctype="application/octet-stream"; Break;
  17. case "zip": $ctype="application/zip"; Break;
  18. case "doc": $ctype="application/msword";ブレーク;
  19. case "xls": $ctype="application/vnd.ms-excel";ブレーク;
  20. ケース "ppt": $ctype="application/vnd.ms-powerpoint";ブレーク;
  21. ケース "gif": $ctype="image/gif";ブレーク;
  22. ケース "png": $ctype="image/png";ブレーク;
  23. ケース "jpeg":
  24. ケース "jpg": $ctype="image/jpg";ブレーク;
  25. ケース "mp3": $ctype="audio/mpeg";ブレーク;
  26. ケース "wav": $ctype="audio/x-wav"; Break;
  27. case "mpeg":
  28. case "mpg":
  29. case "mpe": $ctype="video/mpeg";ブレーク;
  30. ケース "mov": $ctype="video/quicktime";ブレーク;
  31. ケース "avi": $ctype="video/x-msvideo";休憩;

  32. //以下は、ダウンロードすべきでない拡張子 (php ファイルなどの機密性の高いもの) です

  33. case "php":
  34. case "htm":
  35. case "html":
  36. case "txt": die("< b>「. $file_extension .」ファイルには使用できません!");休憩;

  37. デフォルト: $ctype="application/force-download";

  38. }

  39. //ヘッダーの書き込みを開始します

  40. header("Pragma: public");
  41. header("Expires: 0");
  42. header("Cache-Control: must-revalidate, post-check=0, pre-check=0") ;
  43. header("キャッシュ制御: public");
  44. header("Content-Description: File Transfer");
  45. //スイッチで生成された Content-Type を使用します
  46. header("Content-Type: $ctype");

  47. //ダウンロードを強制します

  48. $header="Content-Disposition:attachment; filename=".$filename.";";
  49. header($header );
  50. header("Content-Transfer-Encoding: binary");
  51. header ("Content-Length: ".$len);
  52. @readfile($file);
  53. exit;
  54. }
  55. ?>

复制代


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。