使用PHP实现文件下载

2023-05-16

       这里写了如何使用PHP实现文件下载的程序,主要是为了方便自己查找,也为了方便大家查阅学习(当然网上也有其他类似的代码)。其中详细解析看原程序注释。

PHP实现文件下载程序:

FileDownService.class.php

<?php
	//封装到类
	class FileDownService {
		//下载文件的函数

		//对函数的说明
		//参数说明 $file_name 文件名
		//         $file_sub_dir 下载文件的子路径 "/xxx/xxx/"
		function down_file($file_name, $file_sub_dir) {
			//如果文件是中文的
			//原因 php文件函数,比较古老,需要对中文转码 gb2312
			$file_name=iconv("utf-8","gb2312", $file_name);

			//使用绝对路径
			$file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;

			//1.判断文件是否存在
			if(!file_exists($file_path)) {
				echo '文件不存在!';
				return;
			}

			//2.打开文件
			$fp=fopen($file_path, "r");

			//3.获取下载文件的大小
			$file_size=filesize($file_path);

			//限制下载文件的大小
			/*if($file_size>10*1024*1024) {
				echo "<script language='javascript'>window.alert('文件过大')</script>";
				return ;
			}*/

			//4.添加http的响应信息
			//返回的是文件
			header("Content-type: application/octet-stream");
			//按照字节大小返回
			header("Accept-Ranges: bytes");
			//返回文件大小
			header("Accept-Length: ".$file_size);
			//这里客户端的弹出对话框,对应的文件名
			header("Content-Disposition: attachment; filename=".$file_name);

			//5.向客户端回送数据
			$buffer=1024;

			//为了下载的安全,我们最好做一个文件字节读取计数器
			$file_count=0;
			//这句话用于判断文件是否结束
			while(!feof($fp) && $file_size-$file_count>0) {
				$file_data=fread($fp, $buffer);
				//统计读了多少个字节
				$file_count+=$buffer;
				//把部分数据回送给浏览器
				echo $file_data;
			}

			//6.关闭文件
			fclose($fp);
		}
	}
?>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PHP实现文件下载 的相关文章

  • 静态内部类和普通内部类

    两种内部类 Java的内部类有两种 xff0c 一种是静态内部类 xff0c 另一种是普通内部类 xff0c 普通内部类可以获得外部对象的引用 xff0c 所以在普通内部类能够访问外部对象的成员变量 xff0c 也就能够使用外部类的资源 x
  • 迷宫老鼠游戏

    迷宫老鼠游戏 题目 以一个m n的长方阵表示迷宫 xff0c 0 和 1 分别表示迷宫中的通路和障碍 请设计一个算法 xff0c 对任意设定的迷宫 xff0c 求出一条从入口到出口的通路 xff0c 或得出没有通路的结论 xff1b 如果有
  • java通过JDBC链接SQLServer2012

    下面请一字一句地看 xff0c 一遍就设置成功 xff0c 比你设置几十遍失败 xff0c 费时会少得多 首先 xff0c 在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份
  • 完整java开发中JDBC连接数据库代码和步骤

    转载自 xff1a Hongten JDBC连接数据库 创建一个以JDBC连接数据库的程序 xff0c 包含7 个步骤 xff1a 1 加载JDBC驱动程序 xff1a 在连接数据库之前 xff0c 首先要加载想要连接的数据库的驱动到JVM
  • 浅析网站 APP 登录界面设计

    无论网页或是移动APP的设计 xff0c 很重要的一点是如何能在小而美和功能复杂性之间找到平衡点 本文就移动APP表单设计进行浅析 xff0c 看设计师是如何在设计与交互体验之间做到小而美的平衡 一 极致的减法 这是一个异于常规设计思路而得
  • Android应用开发EditText文本内容变化监听方法

    package com google import android app Activity import android os Bundle import android text Editable import android text
  • Android背景渐变色(shape,gradient)

    转载自 xff1a http l62s iteye com blog 1659433 Android设置背景 色可以通过在res drawable里定义一个xml 如下 xff1a 代码 xml代码 xff1a lt xml version
  • Android 自定义CheckBox 样式

    转载自 xff1a http www open open com lib view open1392187282067 html 有些时候需要根据项目需求自定义CheckBox 的样式 xff0c 步骤如下 xff1a 1 首先在drawa
  • 定制个性化的 Android Checkbox 图标

    首发来自 http blog csdn net garretly 转载注明出处 先大概说一下 这里用到的技术比较简单没有多大的技术含量 关键是大家如何去理解 以及自我更新 好了 这里上代码 在 工程目录下 gt res gt drawabl
  • 解决ssl connect error问题

    curl版本过低 xff0c 升级curl php重新编译 xff0c 指定curl库解决
  • RadioGroup以及RadioButton自定义样式的使用

    转载自 xff1a RadioGroup以及RadioButton自定义样式的使用 RadioButton从字面上就可以很清楚的知道它是单选按钮 xff0c 它与RadioGroup配套时候 通常我们在开发中需要自定义RadioButton
  • 两种方式实现类似qq搜索的切换

    转载自 xff1a 点击打开链接 http www csdn net tag searchview qq的搜索功能在点击搜索框时整个页面上移 xff0c 出现透明布局 该效果是模仿iOS实现的 xff0c 但是在Android也是很容易实现
  • android---xml---include用法(导入另一个XML文件到本布局中)

    转载自 xff1a 点击打开链接 Android在xml文件中可使用include包含其他定义好的布局 xff0c 可以将多处用到的布局单独出来 xff0c 然后用include包含进来 xff0c 这种包含方法相当于把原来布局的一部分代码
  • Android开发技巧之像QQ一样输入文字和表情图像

    转载自 xff1a 点击打开链接 QQ聊天输入框 xff0c 在输入框中可以同时输入文字和表情图像 实际上 xff0c 这种效果在Android SDK中只需要几行代码就可以实现 本文将会介绍如何实现像QQ一样输入表情图像 EditText
  • Android调用相机并将照片存储到sd卡上

    转载自 xff1a 点击打开链接 Android中实现拍照有两种方法 xff0c 一种是调用系统自带的相机 xff0c 然后使用其返回的照片数据 还有一种是自己用Camera类和其他相关类实现相机功能 xff0c 这种方法定制度比较高 xf
  • Android学习长按列表项弹出菜单 给菜单项添加事件 获取上下文

    转载自 xff1a 点击打开链接 这里是先显示一个listview 长按listview的一个列表项 xff0c 弹出一个菜单来 xff0c 菜单有两个条目 xff0c 更新该条 和 删除该条 xff0c 并且这两条都有监听事件 xff0c
  • 通过MediaStore获取Audio信息

    转载自 xff1a 点击打开链接 Android系统提供了MediaScanner xff0c MediaProvider xff0c MediaStore等接口 xff0c 并且提供了一套数据库表格 xff0c 通过Content Pro
  • Android自定义搜索框(EditText)的搜索功能实现,过滤ListView

    实现自定义搜索框 xff08 实际上就是一个EditText xff09 xff1a lt RelativeLayout android id 61 34 64 43 id music search rl 34 android layout
  • Android自定义SwitchButton左右滑动开关按钮控件

    转载自 xff1a 点击打开链接 以前在项目中做过一个类似滑动开关的 但是可惜的是只能用点的方式去操作 总感觉不完美 在网上查阅资料后 稍稍的改进了一下 添加了滑动事件 封装了一个 SwitchButton 的类 分享给大家 希望对大家有用
  • Android开发使用MediaRecorder进行录音

    在说手机android开发如何使用MediaRecorder进行录音前 xff0c 我先来说一下如何在手机SD卡或手机内存上定义路径吧 xff08 优先存储在SD卡上 xff09 获取存放图片或录音文件的路径 xff08 手机内存上或内存卡

随机推荐