使用Zend实现文件上载进度

时间:2009-08-03 14:16:31

标签: php zend-framework

嗨我试图用Zend实现上传进度但是我还没有找到任何详细的教程。指针会很有用。

感谢。

1 个答案:

答案 0 :(得分:12)

我不记得曾经看过一个完全详细的教程,解释如何使用Zend Framework获取上传进度条;但是这里有一些指示,如果您已经了解PHP,文件上传和Zend框架的内容,那么应该引导您一点......

首先,您需要安装这两个PHP扩展中的一个:

这意味着只有当您是服务器的管理员时才能获得此类进度条(默认情况下,这些扩展通常不会安装 - 而不是共享主机)


然后,您必须在上传表单中使用一些特殊的“隐藏”字段;关于这一点,你可以看看configuration options of APC;特别是与RFC 1867相关的那些。

如果您使用的是Zend Framework,我想您已经在表单中使用了一些Zend_Form_Element_File。它应该已经对这些领域做了必要的事情 - 你最好检查一下,确定,顺便说一下。


现在您的表单没问题,您最后可以查看Zend_ProgressBar,以及描述Progress for file uploads的文档章节

您的代码可能看起来有点像(引用文档)

$adapter = new Zend_ProgressBar_Adapter_Console();
$upload  = Zend_File_Transfer_Adapter_Http::getProgress($adapter);

$upload = null;
while (!$upload['done']) {
    $upload = Zend_File_Transfer_Adapter_Http:getProgress($upload);
}

而且,要定期获取该信息,您必须使用某种Ajax请求从网页进行一些轮询。


关于uploadprogress扩展,您可以查看这些文章:

这些帖子并非专门针对Zend Framework,但可能会让您了解正在发生的事情; - )


顺便说一句,你可能想要在本地机器上测试所有这些,这更容易开发......这意味着文件上传真的会快速;这对测试任何类型的进度上传指标都不太好......

关于这一点,您可能会对“减慢”本地网络接口感兴趣;那些可能会有所帮助:


希望这至少有点; - )

而且,当你接受它时:你为什么不把你的发现写成某种好的和详细的教程?这可能对某些人有用; - )