在 Zend Framework 中发送多部分响应以进行下载

发布于 2024-08-29 19:52:23 字数 603 浏览 4 评论 0原文

我在操作助手中发送文件进行下载(如果需要的话部分),如下所示:

...
$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纵山崖 2024-09-05 19:52:24

通常我使用 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文