php中Accept-Length获取不到下载文件的大小

php中在做文件下载的时候,其中要加上这么一些header信息:

1

2

3

4

header("Content-type: application/octet-stream");

header("Accept-Ranges: bytes");

header("Accept-Length:".$fileSize); //请用Content-Length

header("Content-Disposition: attachment; filename=".$fileName);

我已经加了header("Accept-Length:".$fileSize);这句话,可是还是出现如下图的情况,获取不到下载文件的大小,虽然不影响正常的功能,但是为了追求完美,我要探个究竟。

查手册,搜资料,最后才发现header("Accept-Length:***");这其实是一个误导,真不明白网上为什么千篇一律的都是Accept-Length。代潇瑞博客告诉大家,其实正确的应该是header("Content-Length:***"); 修改之后,果然就正确了,如下图的效果。

将Accept-Length改成Content-Length后,终于可以识别下载文件的大小了。

要注意的是:如果网站对下载文件对应的格式(如.doc)设置了gzip压缩,那么Response Headers中就没Content-Length了,因此下载文件就看不到大小。还有一种,如果设置了Transfer-Encoding,Content-Length也将会被忽视,也就是有了gzip、Transfer-Encoding,则不能有Content-Length。(原因:Content-Length既表示实体长度,又表示传输长度。如果实体长度和传输长度不相等(比如说设置了gzip或者Transfer-Encoding),那么则不能设置Content-Length)

文章出自:https://www.daixiaorui.com/read/149.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值