0

Javascriptフォームへのフォローアップが送信されないため(使用しているコードを表示するには、そのリンクにアクセスしてください)、アップロードされたファイルが見つからないという問題が発生しています。

ページの上部に追加$files = apc_fetch('files_'.$_POST['APC_UPLOAD_PROGRESS']);しました。これは次の出力です。print_r($files);

Array
(
    [theFile] => Array
        (
            [name] => tt1.mp4
            [type] => video/mp4
            [tmp_name] => /tmp/php2BEvy7
            [error] => 0
            [size] => 1050290
        )
)

ただし、次のコードを実行しようとすると、次のようになります。

if (file_exists($files['theFile']['tmp_name'])) {

    $webinarType = strcmp($files['theFile']['type'], 'video/mp4');

    if($webinarType == 0) {

        $webinarFile = $fileTitle;
        $webinarTempName = $files['theFile']['tmp_name']; 

    } else {

        echo 'Webinar must be .mp4';

    }

} else {

    echo "No File";

}

出力を取得しNo Fileます。

サーバーにSSHで接続しましたが、ファイルがにないか、/tmp/すべてが存在します。/path/to/public_html/tmp/path/to/file/tmp/

私は使用しようとしましmove_uploaded_file()たが、これはすべてのfile入力で実行されるtmp_nameため、JavaScriptの知識が限られているため、動的に取得できません。

tl;drバージョン; ファイルはどこにあり、どうすれば見つけることができますか?

ノート; このフォームはAPCの介入前に機能し、何かに影響する場合に備えてワードプレスを実行しています。

4

1 に答える 1

0

これも自分で直しました。

progress.phpファイル(他の質問にあります)で、ステートメントを次のように変更しましたelseif

elseif(($s_progressId = $_POST['APC_UPLOAD_PROGRESS']) || ($s_progressId = $_GET['APC_UPLOAD_PROGRESS']))
{
    // If the file has finished uploading add content to APC cache
        $realpath = realpath($PHP_SELF); 
        $uploaddir = $realpath . '/tmp/';
        foreach ($_FILES as $file) {            

            if(!empty($file['name'])) {

                $uploaded_file = $file['name'];
                $moveme = $uploaddir.$uploaded_file;

                move_uploaded_file($file['tmp_name'], $moveme);

            }    

        }

        apc_store('files_'.$s_progressId, $_FILES);
        die();
}

$_FILESそうすれば、入力の名前を知らなくても配列を反復処理できます。数回ループすることに気付きましたif(!empty())が、後から考えると、とにかくベストプラクティスである可能性があります。

于 2012-05-23T01:45:45.660 に答える