创建文件的进度条PHP
-
03-07-2019 - |
题
任何人都不会知道的任何方法,以创建一个文件上载进度条PHP?我经常听说这是不可能的。
我有一个想法,但不知道它会的工作:有一个正常的文件上载,而是提出一个框架.当这是提交文件的存储信息(大小和临时位置)在本届会议。同时,启动阿贾克斯呼吁每一个说10秒检查文件的大小相比大小的存在本届会议。这将返回的尺寸的AJAX然后进度条会的大小和可能显示上传大小的用户。
想法?
其他提示
你几乎想出了怎么做。主要问题是,在完成上传之前,您通常无法访问上传文件的大小。
有解决方法: 启用APC,如果包含名为“APC_UPLOAD_PROGRESS”的字段,则可以访问此信息。并使用apc_fetch()检索具有状态的缓存条目。
还有一个名为uploadprogress的插件,但它没有很好的文档记录,也不适用于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
更多的解释:
- http://www.dinke.net/blog/2006/11/04/php-52-upload-progress-meter/en/
- http://blog.liip.ch/archive/2006/09/10/upload-progress-meter-extension-for-php-5-2.html
Rasmus'的例子:
从PHP 5.4开始,它是会话扩展: http:// php。净//手动/ PL / session.upload-progress.php
在纯PHP中,你是对的:这是不可能的。
如果你是AJAX,那么你可以做你所描述的。我见过的唯一进度表是在Javascript或Flash中,但我想Silverlight也可以这样做。
“旧学校”,但 PHP + Perl 技术: http://www.raditha.com/php/progress.php
在我看来,最好/最简单的解决方案是构建一个小的Flash小部件,它包含一个“上传”按钮和一个进度条。 Flash为您提供了迄今为止上传了多少数据的非常详细的反馈,您可以基于此建立一个很好的进度条。不需要对服务器进行低效轮询,实际上根本不需要对服务器代码进行任何更改。谷歌的'flash uploader',你会发现很多人已经写过这些小部件,并很乐意将它们卖给你。
我建议您查看 SWFUpload 以完成您想要的工作。它相当灵活,支持文件排队,因此您甚至可以处理多文件上传。
您肯定希望使用 digitgerald的FancyUpload 。这是Mootools&基于swfuplaod,它运行一个很好的队列,状态,进度,eta等。它真的是我见过上传文件的最简单的方法。对于我的个人用例ivé用它来让客户选择1.2 GB的PDF文件并上传它们。较新的版本会自动重命名和版本化,同样会被跳过等等。