【发布时间】:2015-09-07 00:22:01
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
在此处粘贴您的
$file_ary -
C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\binaries\tmp\phpA38A.tmpC:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\binaries\tmp\ phpA38B.tmp ...从字面上看,我期待一个数组,但它显示的是没有分隔符的纯文本..
-
看起来像字符串。这是
array吗? -
考虑执行以下操作以对其进行调试:1)
echo $file['error'];以检查上传期间是否发生错误。 2)$res = move_uplo..; var_dump($res)检查上传过程中是否出错。与我们分享他们的输出。 -
查看我更新的帖子 :) 我在评论中发布的是我从 foreach 内部得到的输出 .. 我正在使用 foreach 将多个文件保存到目标文件夹 .. 谢谢