php显示服务器文件,php-无法显示从新服务器下载文件的进度(在以前的服务器上工作)...

我一直在开发iPad应用程序,该应用程序使用ASIHTTPRequest下载一些PDF文件.我一直在使用进度委托来为用户显示进度条,以显示文件的下载进度.这是ASIHTTPRequest设置代码.

request = [ASIHTTPRequest requestWithURL:url];

[request setShouldContinueWhenAppEntersBackground:YES];

[request setDownloadDestinationPath:issue.pdfFilepath];

[request setDownloadProgressDelegate:vc.progressView];

request.showAccurateProgress = YES;

[request setDelegate:self];

[request startAsynchronous];

从我的开发服务器(“好的服务器”)读取数据,所有这些工作都非常出色.但是,是时候将该应用程序的服务器端移到我的客户端的服务器(“不良服务器”)上了.我将所有内容移了过去,仍然能够成功下载PDF,但是在完成下载之前(而不是整个下载过程中)进度条不会更新.

这是我一直用于输出PDF的PHP:(请注意,我也在基于请求的URL在数据库中增加视图计数等,因此我不能直接从应用程序直接访问PDF.我需要从PHP脚本输出PDF.)

header('Content-type: application/pdf');

header('Content-Disposition:inline filename="downloaded.pdf"');

header('Content-Length: '.remote_filesize($pdfUrl) );

readfile($pdfUrl);

我已经能够确定该应用程序没有更新进度条,因为该应用程序最初不知道PDF的总大小.我已经通过在Safari中打开两个文件确定了这一点.

>打开“好服务器”的URL,状态栏显示“已完成1.4的20.3 MB”.

>打开“故障服务器”的URL,状态栏显示“已完成1.4 MB?”.

我已经检查过了,我的remote_filesize()函数在两台服务器上都返回21331445(约20 MB).

因此,我的结论是由于某种原因,即使我指定了“坏服务器”,它也无法正确设置Content-Length标头. php.ini文件中是否有任何设置可能会阻止这种情况?谁能提供任何其他建议进一步解决或解决此问题?

谢谢!

更新5/18/11

感谢AJ关于检查Firefox中标头的出色建议,我发现“不良服务器”正在使用gzip压缩,而不是设置我的Conent-Length.比较如下:

好的服务器

Server: Apache

X-Powered-By: PHP/5.3.3

Content-Disposition: inline filename="downloaded.pdf"

Content-Length: 21331445

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

Content-Type: application/pdf

200 OK

坏服务器

Server: Apache

X-Powered-By: PHP/5.2.17

Content-Disposition: inline filename="downloaded.pdf"

Vary: Accept-Encoding

Content-Encoding: gzip

Keep-Alive: timeout=10, max=30

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: application/pdf

200 OK

我发现一些文章建议通过确保php.ini文件中的“ output_buffering = Off”和“ zlib.output_compression = Off”来关闭gzip.不过是这种情况,两个服务器上的phpinfo()都显示output_buffering和output_compression已关闭.

我们当然在正确的轨道上.这里有什么建议为什么要被压缩?以及如何预防呢?

谢谢!

最终更新:已解决

基本上,我将以下内容添加到了.htaccess文件中,该文件关闭了gzip压缩功能.然后,我得到Content-Length标头和进度条.

SetEnv no-gzip dont-vary

非常感谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值