任意の形式でファイルをダウンロードする
リリース: 2016-07-25 08:46:01
あらゆる形式のファイルのダウンロードをサポートします この関数には 2 つのパラメーターがあります。最初のパラメーターはサーバー内のファイルのパスで、2 番目のパラメーターはダウンロードされたファイルの名前です。
- /**
- * ファイルをダウンロードします
- * ファイル名には接尾辞が含まれません
- */
- public function download($_path, $filename = '') {
- if (file_exists($_path)) {
- $fullPath = CHtml::decode($_path);
- $filename = $filename ? $filename : substr(strrchr($fullPath, '/'), 1);
- // 情報を解析 / 拡張子を取得します
- $fsize = filesize($fullPath);
- $path_parts = pathinfo($ fullPath);
- $ext = strto lower($path_parts["extension"]);
-
- $filename .= '.' . $ext;
-
- // コンテンツ タイプを決定する
- switch ($ext) {
- case 'apk' :
- $ctype = 'application/vnd.android.package-archive';
- ブレーク;
- case 'chm':
- $ctype = 'application/octet-stream';
- ブレーク;
- case "pdf":
- $ctype = "アプリケーション/pdf";
- ブレーク;
- case "txt":
- $ctype = "アプリケーション/txt";
- ブレーク;
- case "zip":
- $ctype = "アプリケーション/zip";
- ブレーク;
- case "doc":
- $ctype = "application/msword";
- ブレーク;
- case "xls":
- $ctype = "application/vnd.ms-excel";
- ブレーク;
- case "ppt":
- $ctype = "application/vnd.ms-powerpoint";
- ブレーク;
- case "gif":
- $ctype = "image/gif";
- ブレーク;
- case "png":
- $ctype = "image/png";
- ブレーク;
- case "jpeg":
- case "jpg":
- $ctype = "image/jpg";
- ブレーク;
- デフォルト:
- $ctype = "application/force-download";
- }
-
- $ua = $_SERVER ["HTTP_USER_AGENT"];
- $encoded_filename = rawurlencode($filename);
- $encoded_filename = str_replace("+", "%20", $encoded_filename);
-
-
- header("Pragma: public"); // 必須
- header("有効期限: 0");
- header("キャッシュコントロール: 必須再検証、事後チェック=0、事前チェック=0");
- ヘッダー("キャッシュコントロール: プライベート"、false); // 特定のブラウザに必要です
- header("Content-Type: $ctype");
- // header('Content-Disposition:attachment; filename="'.rawurlencode($filename).'"');
-
- if (preg_match("/MSIE/", $ua)) {
- header('Content-Disposition:attachment; filename="' . $encoded_filename . '"');
- } else if (preg_match("/Firefox/", $ua)) {
- header("Content-Disposition:attachment; filename*=utf8''" . $filename . '"');
- } else {
- header('Content-Disposition:attachment; filename="' . $filename . '"');
- }
-
- header("Content-Transfer-Encoding: binary");
- header("Content-Length: " . $fsize);
- ob_clean();
- flash();
- readfile($fullPath);
- } else {
- throw new Exception('ファイルが存在しません! ', 1);
- }
- }
コードをコピー
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31