PHP的上传进度功能是否真的有效?

时间:2013-04-30 11:54:49

标签: php file-upload nginx

问题是php 5.4的上传进度功能似乎不起作用。无论我做什么,都不会填充会话变量。

  • 填充并设置session.upload-progress变量。
  • 启用了file_uploads
  • upload_max_filesize设置为2000M
  • post_max_size设置为2000M
  • upload_tmp_dir writable
  • 设置表单中的隐藏变量,它在任何输入元素之前及其名称为:ini_get("session.upload_progress.name")

到目前为止,在Debian下没有成功使用dotdeb php 5.4.14和apache2与php5模块。

我还检查了apc rfc1867钩子。只是不起作用。与uploadprogress扩展相同。有什么想法吗?

使用的示例

for uploadprogress: http://www.ultramegatech.com/2010/10/create-an-upload-progress-bar-with-php-and-jquery/

表示apc: http://blog.famillecollet.com/post/2011/01/12/File-upload-progress-in-PHP-with-APC

for php 5.4: https://github.com/chemicaloliver/PHP-5.4-Upload-Progress-Example

php 5.4 inline(上传开始后,只是从另一个标签调用同一个文件......):

upload.php的:

<?
session_start();
var_dump($_SESSION[ ini_get("session.upload_progress.name") . "123"]);

?>

<form action="upload.php" method="POST" enctype="multipart/form-data">
 <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
 <input type="file" name="file1" />
 <input type="file" name="file2" />
 <input type="submit" />
</form>

2 个答案:

答案 0 :(得分:1)

天啊,nginx是罪魁祸首。如果它用作代理,它首先存储整个上载,当整个文件到达时,将其发送到Apache或您使用的任何其他服务器。因此没有上传进度。

答案 1 :(得分:0)

nginx 1.7.11现在有一个关闭上传缓冲的选项:

功能:&#34; proxy_request_buffering&#34;,&#34; fastcgi_request_buffering&#34;,        &#34; scgi_request_buffering&#34;,&#34; uwsgi_request_buffering&#34;指令。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_request_buffering

并使用此选项上传进度,同时使用它!