php实现文件下载实例分享

2015-05-03  来源:本站原创  分类:php实例  人气:2 

php实现对文件的下载需要了解一定的http协议基础,php实现下载用到四条http协议的信息,用header进行会写处理

举一个案例:

<?php
class Downfile {

    function downserver($file_name){
$file_path = "./img/".$file_name;
//转码,文件名转为gb2312解决中文乱码
$file_name = iconv("utf-8","gb2312",$file_name);
$file_path = iconv("utf-8","gb2312",$file_path);
$fp = fopen($file_path,"r") or exit("文件不存在");
//定义变量空着每次下载的大小
$buffer = 1024;
//得到文件的大小
$file_size = filesize($file_path);
//header("Content-type:text/html;charset=gb2312");
//会写用到的四条http协议信息
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");//可以忽略
header("Content-Length: ".$file_size);//原文这里是Accept-Length经查阅http协议无此项
header("Content-Disposition:attachment;filename=".$file_name);
//字节技术器,纪录当前现在字节数
$count = 0;
while(!feof($fp) && $file_size-$count>0){
//从$fp打开的文件流中每次读取$buffer大小的数据
$file_data = fread($fp,$buffer);
$count+=$buffer;
//将读取到的数据读取出来
echo $file_data;
}
//关闭文件流
fclose($fp);
    }

   }
?>

调用这个函数传入文件名就能对文件实现下载,不过要注意修改$file_path

相关文章
  • php实现文件下载实例分享 2015-05-03

    php实现对文件的下载需要了解一定的http协议基础,php实现下载用到四条http协议的信息,用header进行会写处理 举一个案例: <?php class Downfile { function downserver($file_name){ $file_path = "./img/".$file_name; //转码,文件名转为gb2312解决中文乱码 $file_name = iconv("utf-8","gb2312",$fil

  • JAVA实现多线程的两种方法实例分享 2013-10-12

    这篇文章介绍了JAVA实现多线程的两种方法实例分享,有需要的朋友可以参考一下 java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了.一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新实例,再启动一个新线程. Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法: Thread

  • 总结的7个shell字符串操作方法和实例分享 2013-10-22

    这篇文章主要介绍了总结的7个shell字符串操作方法和实例分享,包括长度获取.查找位置.字符截取.匹配查询等,需要的朋友可以参考下 每一种语言都有他独自的字符串操作方法,shell也一样,下面以以例子的方式,简单介绍常用方法. 1,取得字符串长度 string=abc12342341 //等号二边不要有空格 echo ${#string} //结果11 expr length $string //结果11 expr "$string" : ".*" //结果11 分

  • PHP中使用sleep函数实现定时任务实例分享 2014-02-25

    这篇文章主要介绍了PHP中使用sleep函数实现定时任务实例分享,本文给出了多个使用sleep的例子,本文还可以作为学习sleep函数的教程,需要的朋友可以参考下 在某些程序中,有一些特殊的功能需要用到定时执行,如果熟悉Linux的朋友肯定会说这不是容易吗,直接来个计划任务crontab不久实现了吗?这的确是可以实现,但必须是提前知道具体的执行时间,然后才能写到计划任务里去.比如凌晨两点,上午七点,或者每天上午六点三十分等等. 然而有时候,这个时间我们无法预知,而执行时间是程序动态生成的.然后在

  • java抓取网页数据获取网页中所有的链接实例分享 2014-03-24

    java抓取网页数据获取网页中所有的链接实例分享,使用方法,只要实例化HtmlParser时传入网页地址就可以了 效果图 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.

  • Shell实现多级菜单系统安装维护脚本实例分享 2014-03-28

    这篇文章主要介绍了Shell实现多级菜单系统安装维护脚本实例分享,本文脚本用多级菜单实现管理WEB服务器.Mysql服务器.Nginx服器等,需要的朋友可以参考下 演示效果: 1.一级菜单 2.二级菜单 3.执行操作 脚本参考: #!/bin/bash #author lic(oldboy linux student) #date 1304 DISK_NO="/dev/sda1" NGINX_DIR="/usr/local/tdoa/nginx/sbin/nginx"

  • c#.net 动态读取 走马灯代码实例分享 2014-05-01

    c#.net 动态读取 走马灯代码实例分享,需要的朋友可以参考一下 前台html及js脚本: [html] <div> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#CC66FF" style="WIDTH: 990px; HEIGHT: 5px; BACKGROUND-COLOR:

  • shell脚本实现快速生成xml格式sitemap实例分享 2014-05-03

    这篇文章主要介绍了shell脚本实现快速生成xml格式sitemap实例分享,只是本文的脚本首先需要一个创建好的URL集合文件,也就是数据源才可以生成,需要的朋友可以参考下 用shell快速生成xml格式的sitemap地图文件,中小型网站适用.在本次案例中,生成12053条URL的sitemap文件,仅用时4.3秒!shell代码如下: cat sitemap.txt|awk 'BEGIN{print "<?xml version=\"1.0\" encoding=\

  • ASP.NET Gridview 中使用checkbox删除的2种方法实例分享 2014-05-29

    ASP.NET Gridview 中使用checkbox删除的2种方法实例分享,需要的朋友可以参考一下 方法一: 后台代码: protected void btn_delete_Click(object sender, EventArgs e) { for (int i = 0; i <this.GridView1.Rows.Count; i++) { int id = Convert.ToInt32(this.GridView1.DataKeys[i].Value); if ((this.Gr

  • c#编写webservice服务引用实例分享 2014-05-30

    c#编写webservice服务引用实例分享,大家参考使用吧 首先在新建了一个web服务文件. public SqlWhhWebService1() { InitializeComponent(); } #region Component Designer generated code //Required by the Web Services Designer private IContainer components = null; /// <summary> /// Required

  • java基于包结构的请求路由实现实例分享 2014-06-02

    基于包结构的请求路由简单实现实例分享,大家参考使用吧 WebFilter.java package com.hongyuan.route; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import javax.servlet.Filter; import javax.serv

  • 教你怎么使用sql游标实例分享 2014-06-07

    教你怎么使用sql游标实例分享,需要的朋友参考下 [sql] --1.将每个老师的工资更新为原来的工资+奖金 --定义两个变量,用来存储ttid与reward declare @tid int declare @reward money --1.建立一个基于奖金表的游标 declare cur_reward cursor fast_forward for select ttid,reward from TblTeacherSalary --2.打开游标 open cur_reward --通过游

  • php实现文件下载代码分享 2014-06-19

    php实现文件下载我们需要用到header函数来发送相关信息给客户端浏览器,同时再结合filesize函数来读取文件大小并进行下载操作,下面我们一起来看看相关例子. 简单的文件下载只需要使用HTML的连接标记<a>,并将属性href的URL值指定为下载的文件即可.所示: <a href="http://www.jb51.net/download/book.rar">下载文件</a> 如果通过上面的代码实现文件下载,只能处理一些浏览器不能默认识别的MI

  • php递归删除目录下的文件但保留的实例分享 2014-09-11

    这篇文章主要介绍了php递归删除目录下的文件但保留的实例分享,需要的朋友可以参考下 用php程序删除目录和文件比到ftp删除有很多优势.首先进ftp就比较麻烦,然后删除大量文件的时候ftp删除很慢,还有就是程序只想删除文件夹下面的文件,而保留目录结构,可以用php来轻松的实现,再有比如生成的日志.缓存要清除用程序来完成显然轻松的多. 一:删除目录下面的文件,不删除目录 function delFileUnderDir( $dirName ){ if ( $handle = opendir( "$

  • PowerShell快速创建一个指定大小文件的实例分享 2014-10-06

    这篇文章主要介绍了PowerShell快速创建一个指定大小文件的实例分享,需要的朋友可以参考下 有时做性能测试时,需要准备几个大文件,内容不限制.我以前比较傻,是这样做,拼命地往一个文本文件中写字符串,要写2G,也得花很长时间.今天发现使用FileStream可以秒杀. $tempFile="pstips.net" $fs=New-Object System.IO.FileStream($tempFile,[System.IO.FileMode]::OpenOrCreate) $fs.

  • PHP图片等比缩放类SimpleImage使用方法和使用实例分享 2014-11-05

    这篇文章主要介绍了PHP图片等比缩放类SimpleImage使用方法和使用实例分享,需要的朋友可以参考下 使用方法示例: 设定宽度,等比例缩放 <?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('picture.jpg'); $image->resizeToWidth(250); $image->save('picture2.jpg');?> 设定高度,等比例缩放 复制代码 代

  • 免费手机号码归属地API查询接口和PHP使用实例分享 2014-12-11

    最近在做全国性的行业分类信息网站,需要用到手机号归属地显示功能,于是就穿梭于各大权威站点之间偷来了API的接口地址. 分享出来,大家可以用到就拿去呵 免费手机号码归属地API查询接口和PHP使用实例分享 最近在做全国性的行业分类信息网站,需要用到手机号归属地显示功能,于是就穿梭于各大权威站点之间偷来了API的接口地址. 分享出来,大家可以用到就拿去呵. 一.淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel

  • php冒泡排序.快速排序.快速查找.二维数组去重实例分享 2015-03-04

    这篇文章主要介绍了php冒泡排序.快速排序.快速查找.二维数组去重实例分享,需要的朋友可以参考下 一.冒泡排序 //冒泡排序 function bubble_sort($array) { $count=count($array); if($count <= 0){ return false; } for($i=0;$i<$count;$i++){ for($j=0;$j<$count-$i-1;$j++){ if( $array[$j] > $array[$j+1] ){ $tem

  • .NET截取指定长度汉字超出部分以"..."代替 实例分享 2015-04-07

    .NET截取指定长度汉字超出部分以"..."代替 实例分享,需要的朋友可以参考一下 /// <summary> /// 将指定字符串按指定长度进行剪切, /// </summary> /// <param name= "oldStr "> 需要截断的字符串 </param> /// <param name= "maxLength "> 字符串的最大长度 </param> //

  • java数据库操作类演示实例分享(java连接数据库) 2015-05-04

    java数据库操作类演示实例分享,大家参考使用吧 package org.load.demo; import java.io.IOException; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; impor