普通下载头大概意思,文件输出的地方二选一,小文件下载。如文件较大时注意执行时间与内存使用。可以看php大文件下载

$filename = $_GET['filename'];
$pathname = "./sucai/$filename";
$filesize = filesize($pathname); //跟据路径下载文件
//字节流的方式发送到客户端
header("content-type:application/octet-stream");
//header("content-type:application/force-download"); //关于断点续传,服务器支持
header("Accept-Ranges:bytes") ; //以附件的形式发送到客户端
header('Content-Disposition: attachment; filename="' . basename($path) . '"'); //文件大小比对
header("Content-Length: ". filesize($path)); readfile($path); $handle = fopen($pathname, 'rb');
$content = '';
while (!feof($handle)) {
$content .= fread($handle, 1024);
}
fclose($handle);
echo $content;

项目中用到zip批量打包下载文件,小文件下载。如文件较大时注意执行时间与内存使用。可以看php大文件下载

$param = [
'uid' => 1,
'title' => $db->escape_string('title','string', 'G'),
'annex' => $db->escape_string('annex','string', 'G'),
]; RequestCheck::checkParam($param['title'], 'title');
RequestCheck::checkParam($param['annex'], 'annex'); $title = '文档下载';
$content = serialize($param); get_logadd(0, $content, $title, 25, $_USER->id); if (false !== strpos($param['annex'], ',')) {
$param['annex'] = explode(',', $param['annex']);
} else {
$param['annex'] = [$param['annex']];
} if (false !== strpos($param['title'], '.')) {
$param['title'] = explode('.', $param['title'])[0];
} $filename = $param['title'] . '_' . date('Y-m-d H-i-s') . '_' . rand(100, 999) . '.zip'; $files = $param['annex']; $tmpFile = tempnam('./cache', ''); $zip = new ZipArchive;
$zip->open($tmpFile, ZipArchive::CREATE);
foreach ($files as $file) {
$fileContent = file_get_contents($file);
$zip->addFromString(basename($file), $fileContent);
}
$zip->close(); header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $filename);
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header('Content-Length: ' . filesize($tmpFile));
@readfile($tmpFile);

php (zip)文件下载设置的更多相关文章

  1. urlretrieve 如何给文件下载设置下载进度?

    #python #xiaodeng #如何给文件下载设置下载进度? import urllib def callbackinfo(down,block,size): ''' 回调函数: down:已经 ...

  2. 微信公众号添加zip文件下载

    微信公众号添加zip文件下载的教程 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件.如:zip ...

  3. jszip 前端生成zip文件下载

    [文档地址] export const ZipFileCreate = () => { Promise.all([ // 下面是引入依赖包 require('jszip'), import('f ...

  4. Extnet Direct 提交后台事件文件下载设置

    App.direct.MasterData.Export(App.tfSearch.getValue(), {                    isUpload: true            ...

  5. zip 文件下载函数封装

    代码: export default { /** * 下载文件 */ exportFile: (fileUrl) => { if (fileUrl) { let exportFrame = do ...

  6. MySQL zip版安装配置

    文章出处:http://www.cnblogs.com/winstic/,请保留此连接 这段时间在学习Python 数据库操作知识,简单整理MySQL zip文件安装方法 下载 在MySQL官网htt ...

  7. springboot中使用freemarker生成word文档并打包成zip下载(简历)

    一.设计出的简历模板图以及给的简历小图标切图         二.按照简历模板图新建简历word文件 :${字段名},同时将图片插入到word中,并将建好的word文件另存为xml文件:    三.直 ...

  8. MySQL 5.7.18 zip版本的安装使用方法

    转自:https://www.cnblogs.com/nepulgh/p/7152618.html MySQL 5.7.18 zip版本的安装使用方法 这个版本的MySQL不像那种点击就可以立即安装, ...

  9. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

随机推荐

  1. Python 生成器总结

    生成器的概念: 生成器不会把结果保存在一个系列中,而是保存在生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束 生成器是这样一个函数,它记住上一次返回时在函数体中的位 ...

  2. 有关从经典部署模型迁移到 Azure Resource Manager 部署模型的常见问题

    此迁移计划是否影响 Azure 虚拟机上运行的任何现有服务或应用程序? 不可以. VM(经典)是公开上市的完全受支持的服务. 你可以继续使用这些资源来拓展你在 Azure 上的足迹. 如果我近期不打算 ...

  3. js实现查找字符串出现最多的字符和次数

    代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...

  4. 【Oracle】锁表处理 SQL 错误: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效

    问题描述有时候ORACLE数据的某些表由于频繁操作,而且比较大,会导致锁表(死锁). 问题分析(1)锁的分析ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS): ...

  5. Hive开窗函数的理解

    1.从一个sql语句开始 select id,sum(price) over(partition by id order by price desc) from books; sum作为聚合函数的时候 ...

  6. 乘风破浪:LeetCode真题_004_Median of Two Sorted Arrays

    乘风破浪:LeetCode真题_004_Median of Two Sorted Arrays 一.前言 说到算法,最难的就是一些需要通过分析得到一些递推公式或者有用的结论,进而用来解决问题的方法了. ...

  7. ETCD TLS 配置的坑

    一.环境准备 环境总共 3 台虚拟机,系统为centos7,1个 master,2 个 etcd 节点,master 同时也作为 node 负载 pod,在分发证书等阶段将在另外一台主机上执行,该主机 ...

  8. iOS亮屏解锁命令【iOS自动化测试】--使用ssh

    前提:iOS越狱手机一个 越狱方法:使用pp助手, 爱思助手等 1.从Cydia安装以下软件: AppSync for iOSx(可安装破解软件).afc2add补丁(可访问整个iOS设备的系统文件) ...

  9. 四、并行编程 - 并行LINQ(PLINQ) 的使用。AsParallel

    用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算 一.AsParallel(并行化) 就是在集合后加个AsParallel(). 例如: , ); == ); ...

  10. js布局库

    1.viz.js The solution was that someone cross compiled Graphviz to Javascript using llvm + emscripten ...