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'd 进入服务器并且文件不在/tmp//path/to/public_html/tmp/或者path/to/file/tmp/所有这些都存在。

我曾尝试使用move_uploaded_file(),但由于这是在所有输入上执行的,由于我对 javascript 的了解有限,file我无法动态获得。tmp_name

tl;博士版; 我的文件去哪儿了,我怎样才能找到它?

笔记; 这种形式在 APC 发明之前确实有效,我正在运行 wordpress 以防影响任何事情。

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