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

どうですか:

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

別の方法は次のとおりです

$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
<?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 に答える