在 Zend Framework 中发送多部分响应以进行下载
我在操作助手中发送文件进行下载(如果需要的话部分),如下所示:
...
$response->sendHeaders();
$chunksize = 1 * (1024 * 1024);
$bytesSent = 0;
if ($httpRange) {
fseek($file, $range);
}
while(!feof($file) &&
(!connection_aborted() &&
($bytesSent < $newLength))
) {
$buffer = fread($file, $chunksize);
// $response->appendBody($buffer); // this would be better
print($buffer);
flush();
$bytesSent += strlen($buffer);
}
fclose($file);
我怀疑更好的方法是使用 $response
对象而不是 print
。
使用 Zend Framework 发送大响应对象的推荐方法是什么?
I'm sending files in action helper for downloads (in parts if needed) like this:
...
$response->sendHeaders();
$chunksize = 1 * (1024 * 1024);
$bytesSent = 0;
if ($httpRange) {
fseek($file, $range);
}
while(!feof($file) &&
(!connection_aborted() &&
($bytesSent < $newLength))
) {
$buffer = fread($file, $chunksize);
// $response->appendBody($buffer); // this would be better
print($buffer);
flush();
$bytesSent += strlen($buffer);
}
fclose($file);
I suspect that better way would be to make use of $response
object instead of print
.
Which is the recommended way to send big response objects using Zend Framework?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通常我使用 Noginn Action Helper 发送文件以供下载。
这是另一个答案中很好的描述:
如何将第三方 Action Helper 添加到 Zend Framework 1.8+ 应用程序?
SendFile.php 的 URL:
https://github.com/noginn/ noginn/blob/master/Noginn/Controller/Action/Helper/SendFile.php
Usually I use Noginn Action Helper to send file for downloads.
Here is a good description in another answer:
How to add a third-party Action Helper to a Zend Framework 1.8+ application?
Url to SendFile.php:
https://github.com/noginn/noginn/blob/master/Noginn/Controller/Action/Helper/SendFile.php