嗨我试图用Zend实现上传进度但是我还没有找到任何详细的教程。指针会很有用。
感谢。
答案 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,但可能会让您了解正在发生的事情; - )
顺便说一句,你可能想要在本地机器上测试所有这些,这更容易开发......这意味着文件上传真的会快速;这对测试任何类型的进度上传指标都不太好......
关于这一点,您可能会对“减慢”本地网络接口感兴趣;那些可能会有所帮助:
希望这至少有点; - )
而且,当你接受它时:你为什么不把你的发现写成某种好的和详细的教程?这可能对某些人有用; - )