2010-06-29 56 views
2

我已经遍布互联网阅读APC,它似乎是一个很好的方式来检测文件上传。PHP和APC,文件上传进度不缓存?

然而,我有一个问题。

我知道如何使用Ajax调用文件和所有东西,这就是我计划要做的事情,但是为了测试,我正在做这样的事情。

好的,所以我有3个文件。

form.php的 upload.php的 status.php

form.php的包含:

<input type="hidden" name="APC_UPLOAD_PROGRESS" value="1234" /> 
<input type="file" id="fileIn" name="file" /> 

(我知道我需要在APC_UPLOAD_PROGRESS使用一个唯一的ID同样,这。仅仅是为了testings)

OK,现在upload.php的有规则的PHP脚本上传:

$origin = $_FILES['file']['name']; 
if(move_uploaded_file(...etc...etc)... 

而且Status.php使用APC:

$upload = apc_fetch('upload_1234'); 
if ($upload) { 
    if ($upload['done']) 
     $percent = 100; 
    else if ($upload['total'] == 0) 
     $percent = 0; 
    else 
     $percent = $upload['current']/$upload['total'] * 100; 

echo $percent; 
} 

现在我在做什么使用普通的HTTP方法是上传文件,并使用另一个窗口来监视Status.php。

问题是; Status.php不会返回任何内容!

然而,如果我写 的print_r(apc_fetch( 'upload_1234'));

到upload.php的,它返回正确的阵列,所有的细节等。

我在做什么错?

谢谢。

+0

也,apc.rfc1867等都启用和打开。 – Moe 2010-06-29 03:16:58

+0

有明显的替代选项可供选择:http://pecl.php.net/package/uploadprogress – 2010-06-29 03:30:03

+0

上的任何教程? – Moe 2010-06-29 03:44:47

回答

2

发生这种情况时,需要检查的是,在您的表单中输入文件之前,您将使用APC_UPLOAD_PROGRESS键隐藏输入元素立即

我知道的例子形式上面确实做到这一点,但它很容易错过一个更复杂的形式布局。

+0

羞愧这个答案没有被接受。我不知道隐藏的输入必须来的文件输入之前。 – rich97 2012-12-12 13:42:37