php實(shí)現(xiàn)文件下載實(shí)例分享
更新時間:2014年06月02日 16:35:47 作者:
php實(shí)現(xiàn)對文件的下載需要了解一定的http協(xié)議基礎(chǔ),php實(shí)現(xiàn)下載用到四條http協(xié)議的信息,用header進(jìn)行會寫處理
舉一個案例:
復(fù)制代碼 代碼如下:
<?php
class Downfile {
function downserver($file_name){
$file_path = "./img/".$file_name;
//轉(zhuǎn)碼,文件名轉(zhuǎn)為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協(xié)議信息
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");//可以忽略
header("Content-Length: ".$file_size);//原文這里是Accept-Length經(jīng)查閱http協(xié)議無此項(xiàng)
header("Content-Disposition:attachment;filename=".$file_name);
//字節(jié)技術(shù)器,紀(jì)錄當(dāng)前現(xiàn)在字節(jié)數(shù)
$count = 0;
while(!feof($fp) && $file_size-$count>0){
//從$fp打開的文件流中每次讀取$buffer大小的數(shù)據(jù)
$file_data = fread($fp,$buffer);
$count+=$buffer;
//將讀取到的數(shù)據(jù)讀取出來
echo $file_data;
}
//關(guān)閉文件流
fclose($fp);
}
}
?>
調(diào)用這個函數(shù)傳入文件名就能對文件實(shí)現(xiàn)下載,不過要注意修改$file_path
相關(guān)文章
PhpStorm 2020.3:新增開箱即用的PHP 8屬性(推薦)
這篇文章主要介紹了PhpStorm 2020.3:新增開箱即用的PHP 8屬性的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10php解決搶購秒殺抽獎等大流量并發(fā)入庫導(dǎo)致的庫存負(fù)數(shù)的問題
最近在做一個團(tuán)購項(xiàng)目,遇到個問題,就是在搶購、秒殺、抽獎等活動時,庫存數(shù)量有限,但是同時下單人數(shù)超過了庫存數(shù)量,就會導(dǎo)致商品超售問題。那么我們怎么來解決這個問題呢,我的思路如下:2014-06-06彈出模態(tài)框modal的實(shí)現(xiàn)方法及實(shí)例
這篇文章主要介紹了彈出模態(tài)框modal的實(shí)現(xiàn)方法及實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09thinkphp隱藏index.php/home并允許訪問其他模塊的實(shí)現(xiàn)方法
這篇文章主要介紹了thinkphp隱藏index.php/home并允許訪問其他模塊的實(shí)現(xiàn)方法,想要達(dá)成的效果很簡單,我有兩個模塊,Home、Wechat。具體詳情請參考下本文。感興趣的朋友一起看看吧2016-10-10php教程之魔術(shù)方法的使用示例(php魔術(shù)函數(shù))
這篇文章主要介紹了php的魔術(shù)方法的使用示例(php魔術(shù)函數(shù)),需要的朋友可以參考下2014-02-02