有谁知道的任何方法来创建一个PHP文件上传进度条? 我经常听说,这是不可能的。
我有一个想法,但不知道它是否会工作:有一个正常的文件上传,而是提交给一个iframe。 当这个被提交,存储在会话中的文件信息(大小和临时位置)。 同时,每说10秒检查与存储在会话大小文件的大小开始AJAX调用。 这将大小恢复到AJAX,然后一个进度条会是大小,也许显示上传大小给用户。
思考?
有谁知道的任何方法来创建一个PHP文件上传进度条? 我经常听说,这是不可能的。
我有一个想法,但不知道它是否会工作:有一个正常的文件上传,而是提交给一个iframe。 当这个被提交,存储在会话中的文件信息(大小和临时位置)。 同时,每说10秒检查与存储在会话大小文件的大小开始AJAX调用。 这将大小恢复到AJAX,然后一个进度条会是大小,也许显示上传大小给用户。
思考?
您可以尝试YUI或原型或JQuery的
你几乎想出如何做到这一点。 主要的问题是,你通常要等到它完成上传没有进入上传文件的大小。
这有解决方法:启用APC,如果你有一个名为“APC_UPLOAD_PROGRESS”字段中访问此信息,并使用apc_fetch()用于检索与状态的缓存条目。
还有一个插件叫做上传进度,但它没有很好的记录,并在Windows上无法正常工作(最后我检查反正)。
另一种方法是使用Flash做这件事。 看到这样的脚本FancyUpload 。
APC出现之前,我不得不写在C CGI脚本,写信息到一个文本文件中。 APC似乎是一个更好的方法来做到这一点现在虽然。
希望这可以帮助。
到目前为止,这样做的最常见的方式是SWFUpload的: http://www.swfupload.org/
然而,也可以用纯PHP,只是非常困难,非常实验。 我去看看我能找到的链接。
编辑:据对php.net意见,为5.2有一个钩来处理上传进度。 http://us.php.net/features.file-upload#71564
更多的解释:
拉斯穆斯实施例:
从PHP 5.4是在会话扩展: http://php.net//manual/pl/session.upload-progress.php
在纯PHP,你是正确的:这是不可能的。
如果Ajax的IFY这一点,那么你可以做你描述。 我见过的唯一进展米,在Javascript或Flash,虽然我想象的Silverlight可以做到这一点也。
“老同学”,而是一个PHP + Perl的技术: http://www.raditha.com/php/progress.php
在我看来,最好的/最简单的解决方案是建立一个小型闪存部件,它由一个“上传”按钮和进度条。 闪存给你多少数据到目前为止已经上传的非常详细的反馈,你可以建立基于这样一个漂亮的进度条。 不需要服务器的查询效率低下,实际上并不需要在所有的服务器代码进行任何更改。 谷歌为“Flash上传”,你会发现很多人已经写了这些小部件,并乐意卖给你一个降压。
我建议你看的SWFUpload来完成你想要的东西。 这是相当灵活的,并支持文件的排队,所以你甚至可以处理多文件上传。
你一定会想要去digitgerald的FancyUpload 。 这是Mootools的&swfuplaod为主,它拥有一个不错的队列statusses,进步,ETA等。这真是我见过上传文件最光滑的方法。 对于香港专业教育学院用它来让我个人用的情况下,客户选择1.2 GB的PDF文件,并将它们上传。 较新的获得改名和自动版本,同样是跳过,等等。