无法移动/精细APC上传的文件

时间:2012-05-22 01:00:51

标签: php javascript wordpress apc

作为Javascript form won't submit的后续内容(查看我正在使用的代码访问该链接)我现在遇到一个问题,我无法找到已上传的文件。

我已将$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输入执行此操作,因为我对javascript的了解有限,我无法动态获取tmp_name

tl;博士版;我的档案在哪里,我怎么能找到它?

请注意;这个表格在APC干预之前就已经有效了,我正在运行wordpress,以免影响任何事情。

1 个答案:

答案 0 :(得分: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())然而事后看来它可能是最好的做法。