2

私はインターネット上で 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 を使用する必要があることは承知しています。繰り返しますが、これはテスト用です。)

さて、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 に入力すると、すべての詳細などを含む正しい配列が返されます。

私は何を間違っていますか?

ありがとう。

4

1 に答える 1

2

このような場合、APC_UPLOAD_PROGRESS キーを持つ非表示の入力要素が、フォームのファイル入力の直前に配置されていることを確認してください。

上記の例のフォームがこれを行うことは知っていますが、より複雑なフォーム レイアウトでは簡単に見逃されてしまいます。

于 2011-06-08T05:20:49.183 に答える