PHP - 为上传脚本预加载“请稍候”消息


PHP - Preloading a "please wait" message for an upload script

我设计了一个有效的PHP上传脚本,用于通过POST命令和FTP将文件存放在服务器上。 它工作得很好 - 唯一的问题是我花了很长时间弄清楚如何在文件上传时显示"请稍候"消息。 我尝试在脚本上方添加 HTML,但文本仅在文件上传(或发生错误)后显示。 唯一有效的(某种)方法是使用 onClick html 表单设置添加一个 Javascript 弹出窗口......但这真的不理想,我担心使用该脚本的人可能会对弹出窗口感到困惑,并尝试在 POST/FTP 过程仍在进行时离开主窗口。

我对PHP相对较新,我感觉有一个明显的解决方案......不幸的是,到目前为止,我似乎找不到一个。 有什么想法吗? 请原谅我的无知!:)

谢谢-

您需要在客户端执行此操作。在上传完整文件之前,不会调用 PHP 解释器。因此,如果您有一个 2mb 的文件,则脚本在通过请求完全发送并保存到临时文件之前不会启动。

我建议一些javascript来监视表单的提交以显示您的信息。使用 jquery 像这样的东西:

$('form').on('submit', function() {
  $('#loading').show();
});

如果您使用的是 PHP 5.4,您可以尝试添加新的文件上传进度。这是一篇关于此的好文章:

http://chemicaloliver.net/programming/php-5-4-file-upload-progress-and-html5-progress-bars/

对于 PHP 5.4,现在内置了会话上传进度功能。它最初被修补到 php 5.3 中。这是它的手册 http://php.net/manual/en/session.upload-progress.php。

当 session.upload_progress.enabled 为 true(在 PHP 5.4 中默认为真,并且可能更高)并且在上传期间发送 $_POST[session.upload_progress.name] 时,有关文件传输的信息将在 $_SESSION 超全局数组中提供。

这是一个很好的教程,它使用 $_SESSION 超全局和 javascript 来渲染上传文件的进度条:http://phpmaster.com/tracking-upload-progress-with-php-and-javascript/