Download files in any format
Release: 2016-07-25 08:46:01
Original
906 people have browsed it
Supports downloading files in any format The function has two parameters. The first parameter is the path of the file in the server, and the second parameter is the name of the downloaded file.
- /**
- * Download file
- * filename does not include the suffix
- */
- 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('File does not exist! ', 1);
- }
- }
Copy code
|
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
-
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