下载前不能有输出

//下面是输出下载;

header ( "Cache-Control: max-age=0" );

header ( "Content-Description: File Transfer" );

header ( ‘Content-disposition: attachment; filename=‘ . basename ( $filename ) ); // 文件名

header ( "Content-Type: application/zip" ); // zip格式的

header ( "Content-Transfer-Encoding: binary" ); // 告诉浏览器,这是二进制文件

header ( ‘Content-Length: ‘ . filesize ( $filename ) ); // 告诉浏览器,文件大小

ob_clean();

flush();

echo readfile ( $filename );//输出文件;

时间: 2024-10-12 22:18:03

下载前不能有输出的相关文章

PHP header() session_start() 函数前不能有输出,为什么?

前阵面试遇到的问题,当时没答上来,后来查了些资料,仍未得到答案.今天研究HTTP请求,终于知道了答案. HTTP 函数允许在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作. HTTP请求和HTTP响应都有消息报头.而消息报头是由众多报头域组成. 也就是设置请求的消息报头,再发送:若之前有输出,就先以默认请求发送了,消息报头已确定,后面的设置就失效. 参考:PHP HTTP函数 HTTP协议详解(五.消息报头) 粗略认识,如有错误请指正.

php的header()函数前有echo输出情况分析

php的header()方法一般被用来告知浏览器做一些什么样的操作,比如跳转,刷新等等:而调用header方法前,如果使用echo输出一些内容,会发生什么情况呢?会对header函数有影响吗?我们实验来看看情况. 第一部分: 选择环境和版本 我们的测试选择的是LNNP,php的版本是5.3.8,相对较老的版本 第二部分:测试用例 <?php $str = "qwertyuiopasdfghjklzxcvbnm1234567890~!@#$%^&*()_+"; $time

apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出

用到了apache 的 commons-net-3.0.1.jar 和 log4j-1.2.15.jar 这连个jar包 JAVA 代码如下: 1 package com.bjut.edu.cn.ftp; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import ja

java 有千位分隔逗号的数字格式化输出 数字前补0输出

System.out.printf("%,5d %,6.1f\n", 312342, 3155623.932);输出:312,342 3,155,623.9 System.out.printf("%05d %06.1f\n", 32, 32.32);输出:00032 0032.3

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

asp实现将网页内容输出到word并下载到本地

个人觉得要实现这个功能如果没有类库提供的几个关键函数,还是比较繁琐的.所以首先介绍几个将要在代码中使用的关键函数和参数,然后再说函数实现.注意问题等. 关键函数: 1.函数原型:Response.AppendHeader(name,value);  本例中使用: Response.AppendHeader("Content-Disposition", "attachment;filename=fileDown.doc"); 说明:将http头添加到输出流,name

有关header()前不能有实际输出的一点分析

在看了一些博文以后,发现大多数博文并不能解决我的问题,他们的重点都是放在对输出缓冲器的一些操作上面,而并没有真正提到"为什么header前不能有输出?"或者讲的都很模糊,下面我们来看看究竟是为什么. 那我们也得先来聊聊缓冲吧. buffer是啥?全名叫缓冲寄存器,存储速度较快.主要分为输入缓冲器和输出缓冲器两种. 输入缓冲器:将外设送来的数据暂时存放,以便处理器将它取走.我们都知道,处理器的速度很快,外设较慢,如果没有缓冲器的话,cpu将有大部分时间在等待外设数据,简直很浪费时间嘛!这

Java多线程断点下载分析

1.主函数main()——调用抽象类DownloadUtils.java,传入参数:url.fileName.filePath.threadNum 2.DownloadUtils.java——是抽象类,download()为抽象方法,根据传入的参数选择调用的方法 2.1.创建DownloadInfo.java类的实例bean: DownloadInfo bean = new DownloadInof(url,fileName,filePath,threadNum); 2.2.通过LogUtils

Android OkHttp文件上传与下载的进度监听扩展

相信大家对OkHttp也是相当的熟悉了,毕竟是Square的东西,对于其种种优点,这里也不再叙说.优秀是优秀,但是毕竟优秀的东西给我们封装了太多,那么问题来了,我们使用OkHttp作为我们的网络层,简单地进行GET/POST请求是毫无问题.近日看了产品的设计稿,毛估估会有文件的上传与下载的需求,如果使用OkHttp作为网络层进行封装,你会惊讶的发现,简直封装的太"完美"了.如果现在有这么一个需求,要求对文件进行上传或下载,但是在上传或者下载前,你需要给用户一个友好的提示,在上传或者下载