任意格式文件下载
Freigeben: 2016-07-25 08:46:01
Original
929 Leute haben es durchsucht
支持任意格式的文件下载 函数有两个参数,第一个参数是文件在服务器中完成路径,第二个参数是下载显示文件名称。
- /**
- * 下载文件
- * filename 不包括后缀名
- */
- public function download($_path, $filename = '') {
- if (file_exists($_path)) {
- $fullPath = CHtml::decode($_path);
- $filename = $filename ? $filename : substr(strrchr($fullPath, '/'), 1);
- // Parse Info / Get Extension
- $fsize = filesize($fullPath);
- $path_parts = pathinfo($fullPath);
- $ext = strtolower($path_parts["extension"]);
-
- $filename .= '.' . $ext;
-
- // Determine Content Type
- switch ($ext) {
- case 'apk':
- $ctype = 'application/vnd.android.package-archive';
- break;
- case 'chm':
- $ctype = 'application/octet-stream';
- break;
- case "pdf":
- $ctype = "application/pdf";
- break;
- case "txt":
- $ctype = "application/txt";
- break;
- case "zip":
- $ctype = "application/zip";
- break;
- case "doc":
- $ctype = "application/msword";
- break;
- case "xls":
- $ctype = "application/vnd.ms-excel";
- break;
- case "ppt":
- $ctype = "application/vnd.ms-powerpoint";
- break;
- case "gif":
- $ctype = "image/gif";
- break;
- case "png":
- $ctype = "image/png";
- break;
- case "jpeg":
- case "jpg":
- $ctype = "image/jpg";
- break;
- default:
- $ctype = "application/force-download";
- }
-
- $ua = $_SERVER["HTTP_USER_AGENT"];
- $encoded_filename = rawurlencode($filename);
- $encoded_filename = str_replace("+", "%20", $encoded_filename);
-
-
- header("Pragma: public"); // required
- header("Expires: 0");
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header("Cache-Control: private", false); // required for certain browsers
- 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();
- flush();
- readfile($fullPath);
- } else {
- throw new Exception('文件不存在!', 1);
- }
- }
复制代码
|
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
-
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