0

我写了一个PHP表单来上传这样的文件

<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>

(从这里: http: //php.net/manual/en/session.upload-progress.php

现在我想通过 ajax(get) 获取我的上传进度,所以我创建了一个 iframe 并将我的表单定位到这个 iframe
然后,我创建另一个 php 文件来获取状态......

<? php
$key=ini_get("session.upload_progress.prefix")."FORM NAME";
$_SESSION[$key]...

...好吧.. $_SESSION 在 nginx-1.4.1 上为空,但此方法适用于我的 apache(我对每个服务器使用相同的脚本)
这是 session.upload_progress 的 php.ini

session.upload_progress.cleanup 开启

session.upload_progress.enabled On

session.upload_progress.freq 1%

session.upload_progress.min_freq 1

session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS

session.upload_progress.prefix upload_progress_

如何解决它...

4

1 回答 1

2

Nginx 缓冲请求正文(包括文件上传),因此 PHP 仅在浏览器完成发送文件后才能看到文件,从而使该功能无用。

不幸的是,目前无法在 nginx 中禁用请求正文缓冲。有些人创建了nginx 补丁

另一种方法是使用这个 nginx 模块:[HttpUploadProgressModule]( http://wiki.nginx.org/HttpUploadProgressModule

于 2013-05-31T15:51:21.060 回答