2

我有几个文件上传了一个由 PHP 脚本处理的表单。我需要以不同的方式处理几个“类别”。换句话说,我需要将 $_FILES 数组中的一些文件存储在某个地方,而将其他一些文件存储在其他地方。

所以我需要的是所有不是 $_FILES['filename_form'] 的文件(数组键)都可以单独存储/使用。

我需要这个的原因是因为上传的文件数量是动态的,但总是$_FILES['filename_type1']$_FILES['filename_type2_*]其中 * 是从表单输入更多文件时递增的数字(动态)

可能是一个非常简单的解决方案,要么我太累了,要么我一直盯着代码看太多,但我只知道明天早上之前我需要一个解决方案,所以它对时间很敏感 =P

感谢我能得到的所有帮助。谢谢!

4

6 回答 6

4
$files = array();
$filenames = array();
foreach($_FILES as $name => $fileInfo)
{
    if($name != 'filename_form')
    {
        $files[$name] = $fileInfo;
        $filenames[] = $name;
    }
}
于 2012-05-04T23:53:20.833 回答
0

这是另一种方式

$keys = array_keys($thearray);
$filteredArray = array_filter($keys, 'fiterKeys');

function filterKeys($item) {
    if($item != 'valuetocheck') return true;
    else return false;
}
于 2012-05-05T00:00:27.587 回答
0
$type1_files = array(); // Array of files of first type
$type2_files = array(); // Array of files of second type
$underfined_files = array(); // Array of files of unnormal type (who knows :-P)

foreach($_FILES as $name => $value){
    if($name == 'type1'){
        $type1_files[] = $value;
    }
    elseif($name == 'type2'){
        $type2_files[] = $value;
    }
    else{
        $undefined_files[] = $value;
    }
}

在 foreach 之后,您会将文件划分为数组,稍后您可以根据需要对其进行处理

于 2012-05-05T00:01:11.977 回答
0

怎么样:

foreach ( $_FILES as $key => $value )
   if ( preg_match ( '/type2/', $key ) )
      // do something with the type2
   else if ( preg_match ( '/type1/', $key ) )
      // do something with these
于 2012-05-04T23:55:06.327 回答
0
<?php
foreach ($_FILES as $key => $value) {
  $a = explode('_', $key);
  $defaultDir = 'myDefaultDirOrPathOrWhatever';
  if ($a[1] == 'type2') {
    $defaultDir = 'myOtherDirWhenMultipleFiles';
    $incrementPassed = $a[2];
  }
  if (isset($incrementPassed)) unset($incrementPassed);
}
于 2012-05-04T23:55:08.990 回答
0
<?php

$files = array();
foreach ($_FILES as $filename => $fileinfo) {
  if (strpos($filename, 'form') !== false) {
    $files[$name] = $fileinfo;
    unset($_FILES[$name]);
  }
}

?>

我能想到的最快方法应该比以前的任何答案都快。

于 2012-05-05T00:28:01.137 回答