我正在尝试使用foreach循环从文件上传中保存多个文件的文件。但是move_uploaded_file只执行一次。我尝试打印$ file [' tmp_name'],但它在一行中将两个数组值打印为文本。怎么能解决这个问题..谢谢..
public function uploadFile($filename)
{
$file_ary = $this->reArrayFiles($_FILES[$filename]);
foreach ($file_ary as $file) {
move_uploaded_file($file['tmp_name'] , '../uploads/' . '.txt');
}
}
function reArrayFiles(&$file_post) {
$file_ary = array();
if(!is_array($file_post['name']))
return array($file_post);
$file_count = count($file_post['name']);
$file_keys = array_keys($file_post);
for ($i=0; $i<$file_count; $i++) {
foreach ($file_keys as $key) {
$file_ary[$i][$key] = $file_post[$key][$i];
}
}
return $file_ary;
}
$file_ary :- Array ( [0] => Array ( [name] => customer care.txt [type] => text/plain [tmp_name] => C:\Program Files (x86)\EasyPHP-DevServer- 14.1VC11\binaries\tmp\php7B21.tmp [error] => 0 [size] => 11 ) [1] => Array ( [name] => ss.txt [type] => text/plain [tmp_name] => C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\binaries\tmp\php7B32.tmp [error] => 0 [size] => 0 ) [2] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
$file['tmp_name'] : C:\Program Files (x86)\EasyPHP-DevServer- 14.1VC11\binaries\tmp\phpA38A.tmpC:\Program Files (x86)\EasyPHP-DevServer- 14.1VC11\binaries\tmp\phpA38B.tmp
答案 0 :(得分:1)
此函数检查以确保filename指定的文件是 一个有效的上传文件(意思是它是通过PHP的HTTP POST上传的 上传机制)。如果文件有效,它将被移动到 目的地给出的文件名。
取自docs。
基本上,移动后,文件将不再存在。请注意,该移动与复制的不同之处在于它移除了源文件。您需要创建一个文件资源,在那里复制所需的内容,然后随时随地保存。