php使浏览器直接下载pdf文件的方法
有的浏览器安装了pdf打开程序关联到浏览器,所以直接写上pdf路径时是打开pdf而不是下载,下面我就说下如果让他们只是下载,而不是浏览。
创建一个php文件
<?php
$file = $_GET['file'];
$arr = explode('/',$file);
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.array_pop($arr).'"');
readfile(file);
?>
加入代码,通过这个把pdf路径转换成浏览器认识的语言,告诉浏览器
列子 /upload.php?file=/aa/aa.pdf
这样就可以不管是什么,都会下载,而不是打开
相关推荐
-
PHP文件下载类
复制代码 代码如下: <? //==================================================== // 使用范例: // $download=new download('php,exe,html',false); // if(!$download->downloadfile($filename)) // { // echo $download->geterrormsg(); // }
-
在Nginx中使用X-Sendfile头提升PHP文件下载的性能(针对大文件下载)
很多时候用户需要从网站下载文件,如果文件是可以通过一个固定链接公开获取的,那么我们只需将文件存放到 webroot下的目录里就好.但大多数情况下,我们需要做权限控制,例如下载 PDF 账单,又例如下载网盘里的档案.这时,我们通常借助于脚本代码来实现,而这无疑会增加服务器的负担. 例如下面的代码: <?php // 用户身份认证,若验证失败跳转 authenticate(); // 获取需要下载的文件,若文件不存在跳转 $file = determine_file(); // 读取文件内容 $co
-
Php中文件下载功能实现超详细流程分析
客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下. 服务器接受到该请求以后,马上运行该down.php文件 运行该文件的时候,必然要把将要被下载的文件读入内存当中(这里是圣诞狂欢.jpg这张图片),这里通过fopen()函数完成该动作 注意:任何有关从服务器下载的文件操作,必然需要先在服务端将文件读入内存当中 现在文件已经在内存当中了,这是需要从内存当中读取文件,通过fread()函数完成该动作 需要注意的是,如果文件较
-
php实现的支持断点续传的文件下载类
本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧.分享给大家供大家参考.具体方法如下: 通常来说,php支持断点续传,主要依靠HTTP协议中 header HTTP_RANGE实现. HTTP断点续传原理: Http头 Range.Content-Range() HTTP头中一般断点下载时才用到Range和Content-Range实体头, Range用户请求头中,指定第一个字节的位置和最后一个字节的位置,如(Range:200-300) Content-Range用
-
php 下载保存文件保存到本地的两种实现方法
第一种: <?php function downfile() { $filename=realpath("resume.html"); //文件名 $date=date("Ymd-H:i:m"); Header( "Content-type: application/octet-stream "); Header( "Accept-Ranges: bytes "); Header( "Accept-Length
-
php readfile下载大文件失败的解决方法
本文实例讲述了php readfile下载大文件失败的解决方法.分享给大家供大家参考,具体如下: 大文件有200多M,只下载了200K就提示下载完成,且不报错. 原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载. if (file_exists($file)) { if (FALSE!== ($handler = fopen($file, 'r'))) { header('Content-Description: File Transfer'); header('Conten
-
php利用header函数实现文件下载时直接提示保存
复制代码 代码如下: <?php $filename = '路径+实际文件名'; //文件的类型 header('Content-type: application/pdf'); //下载显示的名字 header('Content-Disposition: attachment; filename="保存时的文件名.pdf"'); readfile("$filename"); exit(); ?> 下面是网上常用的方法 复制代码 代码如下: if (is
-
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下. 复制代码 代码如下: <?php $file_name = urlencode($_REQUEST['filename']); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, po
-
解决PHP超大文件下载,断点续传下载的方法详解
最近导出的时候出现一个php内存溢出的问题,原因就是在于下载的时候读取生成的临时文件过大,PHP内存无法容纳,一开如是想到更改PHP内存限制,但是这个只是一个缓兵之计,于是想到了另外一个方法是把文件分次读取,并下载. 以下是源代码: 复制代码 代码如下: <?php $sourceFile = "1.tmp"; //要下载的临时文件名 $outFile = "用户订单.xls"; //下载保存到客户端的文件名 $file_extension = strtolo
-
php做下载文件的实现代码及文件名中乱码解决方法
最近有人问我做下载文件的方法,对于php方法如下: 复制代码 代码如下: <?php header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=ins.jpg"); readfile("imgs/test_Zoom.jpg"); ?> 第一行代码是强制下载: 第二行代码是给下载的内容指定一个
-
PHP实现远程下载文件到本地
代码很简单就不多废话了,直接奉上: <?php echo httpcopy("http://www.baidu.com/img/baidu_sylogo1.gif"); function httpcopy($url, $file="", $timeout=60) { $file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file; $dir = pathinfo($file,PATHINFO_DI
随机推荐
- JavaScript中从setTimeout与setInterval到AJAX异步
- 15 个 JavaScript Web UI 库
- 在AngularJS中使用jQuery的zTree插件的方法
- springmvc 发送ajax出现中文乱码的解决方法汇总
- python基础教程之基本数据类型和变量声明介绍
- 纯JS实现旋转图片3D展示效果
- yii2控制器Controller Ajax操作示例
- php array_pop()数组函数将数组最后一个单元弹出(出栈)
- 修改Apache配置指定php配置文件php.ini的位置方法
- asp sqlserver 执行存储过程返回记录集报对象关闭时不允许操作
- 有关于JS构造函数的重载和工厂方法
- mysql索引学习教程
- PHP 常用时间函数资料整理
- 详解Python中的静态方法与类成员方法
- Knockoutjs的环境搭建教程
- 双至强cpu 32g内存服务器 做了阵列1更换一个坏的硬盘后,没做阵列
- jquery实现网页定位导航
- Powershell截取字符串并添加省略号的例子
- JavaScript的jQuery库中function的存在和参数问题
- 浅谈单调队列、单调栈