作为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,以免影响任何事情。
答案 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())
然而事后看来它可能是最好的做法。