当前位置:  编程技术>php

使用PHP强制下载PDF文件示例

    来源: 互联网  发布时间:2014-08-26

    本文导语:  我们有时会遇到这样一种情况,当需要下载一个PDF文件时,如果不经处理会直接在浏览器里打开PDF文件,然后再需要通过另存为才能保存下载文件。本文将通过PHP来实现直接下载PDF文件。 实现原理:我们仅仅只需要修改页面HT...

我们有时会遇到这样一种情况,当需要下载一个PDF文件时,如果不经处理会直接在浏览器里打开PDF文件,然后再需要通过另存为才能保存下载文件。本文将通过PHP来实现直接下载PDF文件。

实现原理:我们仅仅只需要修改页面HTTP头,把Content-Type设置为force-download,问题即可解决。

请看代码:
代码如下:

forceDownload("pdfdemo.pdf");
function forceDownload($filename) {

if (false == file_exists($filename)) {
return false;
}

// http headers
header('Content-Type: application-x/force-download');
header('Content-Disposition: attachment; filename="' . basename($filename) .'"');
header('Content-length: ' . filesize($filename));

// for IE6
if (false === strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) {
header('Cache-Control: no-cache, must-revalidate');
}
header('Pragma: no-cache');

// read file content and output
return readfile($filename);;
}

为了方便,我写了一个函数forceDownload(),然后通过调用该函数即可。

    
 
 

您可能感兴趣的文章:

  • Django项目使用示例步骤及代码
  • linux使用shell脚本,如何创建用户,并设置用户密码?能否给出示例?
  • 使用libpcap实现抓包程序的步骤及代码示例
  • curl不使用文件存取cookie php使用curl获取cookie示例
  • python使用循环实现批量创建文件夹示例
  • jQuery 回车事件enter使用示例
  • jquery中交替点击事件toggle方法的使用示例
  • php中的strpos使用示例
  • sql使用cast进行数据类型转换示例
  • mysql求和函数使用示例
  • c#闭包使用方法示例
  • java使用正则表达校验手机号码示例(手机号码正则)
  • 使用java执行定时任务示例
  • java的split方法使用示例
  • c++11可变参数使用示例
  • c#的params参数使用示例
  • android开发教程之switch控件使用示例
  • 使用python实现strcmp函数功能示例
  • c#使用资源文件的示例
  • 不使用php api函数实现数组的交换排序示例
  • java协变返回类型使用示例
  • 如何强制删除或恢复SQLServer正在使用的数据库
  • 使用fcntl加强制锁,是不是一定要把这个文件系统设置为允许强制锁阿?
  • 在LINUX下使用强制类型转换reinterpret_cast 出错?
  • 如何正确使用标题元素、段落和强制换行
  • xp下装linux双系统,从现有磁盘中分出一段来供LINUX使用.请问linux分区时 / 是不是一定要强制为主分区?
  • 强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • C#中使用强制类型实现字符串和ASCII码之间的转换
  • 基于VC中使用ForceInclude来强制包含stdafx.h的解决方法
  • 【江湖救急】如何强制使用ubuntu的swap memory?
  • arm-elf-gcc编译时如何强制其使用长指针?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 在ACC变成中要使用发ftp传送文件,但文件名不确定,请问怎么样在程序的FTP中使用字符串变量???
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • qemu使用的img文件和vm使用的img文件格式不同吗?
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 为什么使用cat输出的文本文件是中文的,使用java从文件读取出来时显示的是乱码?
  • 怎样使用FTP递归获取文件夹下的所有文件及子文件夹?
  • GUI问题:如何使用文件选择对话框保存文本文件,图像文件??
  • 如何强制删除或恢复SQLServer正在使用的数据库 iis7站长之家
  • 急问:在linux里面怎么察看一个文件夹或文件有哪些用户在使用?
  • *.taz文件是什么文件?如何使用?
  • 使用TCP传输文件,文件传输成功了,大小也一样,但无法打开
  • 有没有办法在打开一个文件之前判断当前是否有进程在使用(读或写)该文件
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 高手请进:linux下使用.o文件,makefile文件的问题
  • linux下静态库使用:"未使用链接器输入文件,因为链接尚未完成"
  • vim生成的.cpp~是什么文件?我使用vim编辑的时候出现了好多.cpp~文件
  • *.db文件使用什么数据库打开的文件呀?
  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • 几台机器做lvs,使用100M 网线连接,文件系统使用NFS共享,读写速度会出现问题吗?
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3