PHP实现文件上传


PHP实现文件下载两种方式(a标签和header标签)

  • 文件的下载
    • 1.标签a直接下载
    • 2.采用Header方式下载
      • 1. 下载文件对话框
      • 2. 缓存指令
      • 3. 清除缓存

文件的下载

1.标签a直接下载

<a href="/uploads/123465.docx" download="">download</a>

2.采用Header方式下载

<?php
ob_end_clean();
$file_name = "3.pdf";     //下载文件名
$file_dir = "./uploads/";        //下载文件存放目录
$file=$file_dir.$file_name;
//检查文件是否存在于目录
if (!file_exists ($file)) {header('HTTP/1.1 404 NOT FOUND');
} else {ob_end_clean();header('Content-Description: File Transfer');header('Content-Type: application/octet-stream');//请求范围的度量单位Header ( "Accept-Ranges: bytes" );//下载后的文件名称为$file_nameheader('Content-Disposition: attachment; filename='.$file_name);header('Content-Transfer-Encoding: binary');#Expires:设置页面缓存时间header('Expires: 0');header('Cache-Control: must-revalidate');header('Pragma: no cache');//Content-Length是指定包含于请求或响应中数据的字节长度header('Content-Length: ' . filesize($file));ob_clean(); flush();readfile($file);exit();ob_end_clean();
}

1. 下载文件对话框

<?php
// 输出 PDF 文件
header('Content-type: application/octet-stream');// 供一个推荐的文件名名称为 $file_name文件
header('Content-Disposition: attachment; filename='.$file_name);// 该 PDF 来源于$file_name
readfile($file_name);
?>

2. 缓存指令

PHP 脚本经常生成一些动态内容,它不该被客户端、服务器与浏览器之间的代理缓存,通过以下指令控制缓存。

   <?php//设置缓存时间header('Expires: 0');header('Cache-Control: must-revalidate');?>

cache-control可取值:

  • no-cache: 告诉浏览器、缓存服务器,不管本地副本是否过期,使用资源副本前,一定要到源服务器进行副本有效性校验。

  • must-revalidate:告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。

3. 清除缓存

如果不清楚缓存,在读取含图片的文件时,容易出现乱码等问题

  • ob_end_clean();
  • ob_clean(); flush();

web性能优化之:no-cache与must-revalidate深入探究

header官方文档

PHP实现文件下载两种方式(a标签和header标签)相关推荐

  1. 微信小程序文件下载两种方式

    1. 基本url方式下载(自定义下载文件名称) downloadDailyYear: function() {util.get(api.downloadDailyYear).then(function ...

  2. PHP实现文件下载的两种方式(GuzzleHttp和Curl)

    PHP实现文件下载的两种方式分别使用GuzzleHttp扩展和Curl扩展来实现.本例以下载PDF文件为例,实际上大家可以举一反三下载其他文件格式是一样的. 1.使用GuzzleHttp 扩展库 us ...

  3. Spring加载properties文件的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...

  4. kubernetes创建资源的两种方式

    一.创建方式分类: 命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1.用 kubectl 命令行的方式直接创建,比如: kubectl run httpd-app --image ...

  5. matlab 转换 tfrecord,训练数据集与TFRecord互相转换的两种方式

    TensorFlow使用TFRecord格式来统一存储数据,该格式可以将图像数据.标签信息.图像路径以及宽高等不同类型的信息放在一起进行统一存储,从而方便有效的管理不同的属性. 将训练数据集转成TFR ...

  6. com.android.sadk卸载不掉,Android的Service的两种方式以及使用

    Service根据使用方式有两种:startService.bindService. 区别: ①启动方式:前者startService.后者bindService: ②和Activity联系:前者Ac ...

  7. java提交数据到另一个页面_JS实现把一个页面层数据传递到另一个页面的两种方式...

    由于之前面试,被问到过此问题,所以今天特意整理了一下.由于自己技术水平有限,若存在错误,欢迎提出批评. 本博客整理了两种方式从一个页面层向另一个页面层传递参数. 一. 通过cookie方式 1. 传递 ...

  8. Struts2-表单验证的两种方式

    1. Struts2中的输入校验 2. 编码方式校验   1) Action一定要继承自ActionSupport   2) 针对某个要进行校验的请求处理方法编写一个 public void vali ...

  9. 向服务器端提交数据的两种方式

    朴素版:                                                                                                 ...

  10. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...

最新文章

  1. 3、将对象存储到zookeeper中,然后再拿下来还原
  2. Android-静态代理模式
  3. SAP Commerce Cloud Accelerator theme css 加载的问题和 multi step checkout
  4. 国学精典书籍阅读记录
  5. vr降噪器英文是什么_什么是VR体验馆设备?
  6. java 实现支持向量机
  7. sdram trp_TRP的完整形式是什么?
  8. 【数据库系统】再谈关系模型和关系型数据库
  9. 软件测试学生管理系统课程设计,软件测试课程设计-ERP进销存管理系统(1)
  10. c语言把一段编码注释,C语言编码规范——着重注意点整理
  11. BZOJ3312: [Usaco2013 Nov]No Change
  12. rosweb显示2d地图时,车在地图中的图形显示有时后特别大
  13. ROS中测试机器人里程计信息
  14. php实现标签打印,标签打印软件怎么实现批量套打标签?
  15. 解决OneNote无法联网
  16. 网页错误代码汇总(整理不易,用心记住)
  17. 如何清理占用计算机内存,告诉你如何深度清理电脑内存
  18. 三十二楼层选几层最好_楼层风水几楼最好 1一32高楼层选最佳楼层
  19. hadoop2.7.4在windows系统IDEA远程测试
  20. java基础之后台线程_繁星漫天_新浪博客

热门文章

  1. 前端实现导入(excel文件)导出(word)文件
  2. PaddleOCR整体了解
  3. 计算机cpu尺寸,英特尔CPU型号尺寸.doc
  4. Java人脸识别考勤系统_GitHub - magician1128/WorkAttendanceSystem: 一个基于opencv、dilb的员工人脸识别考勤系统...
  5. 自定义xml解析框架
  6. 产品读书《粉丝经济:传统企业转型互联网的突破口》
  7. PCB负片(PCB Negative)
  8. 87键盘怎么用小键盘功能
  9. 计算机中的信息计量单位字,计算机中信息的计量单位.pdf
  10. 计算机抖音链接,抖音怎么开始电脑直播