Q:

Como aplicar upload múltiplo de imagens

Ola tenho esse código que gera no caso adicionadores múltiplos com tudo não estou sabendo como fazer um código de upload de imagens para fazer o upload de todas as imagens que são colocadas no FILE do campo de arquivo[ ] alguém poderia me ajudar a complementar o código . 
No caso estou necessitando que o código faça o upload para a pasta medias, aplique redimensionamento, logo marca e upe todas as imagens e adicione os valores das imagem em arquivo='".$arquivoImagem[$valores]."'  também desde ja agradeço quem poder me ajudar.  
Segue abaixo o código que eu fiz com tudo sem o código de upload de imagem.  Estou iniciando ainda o meu curso em PHP e tem muita coisa ainda que eu não sei fazer.  
Eu só consegui so consegui fazer somente no caso o código de repetição usando o for e adicionar os valores direto ao banco de dados. 
index.php
<form id="form1" name="form1" method="post" action="multiplicar.php">
  Coloque aqui o numero de episodios que vc ira adicionar 
  <label>
    <input type="text" name="numeros" id="numeros" style="width:20px;" />

  </label>
  <label>
    <input type="submit" name="button" id="Gerar" value="Gerar" />
  </label>
</form>

multiplicar.php
<form id="form1" enctype="multipart/form-data" name="form1" method="post" action="salvar.php">
    <? php
    $valor = $_POST["numeros"];
    for ($repeticao = 1; $repeticao <= $valor; $repeticao++) { ? >
      <label>
       Nome  <input name="categorias[]" type="text" id="numero" value="" size="10" />  Tipos  <input name="tipos[]" type="text" id="tipos" value="" size="10" /></br>
       Imagem <input name="arquivo[]" type="file" id="arquivo[]" style="border:0px; width:249px;box-shadow: 0px 0px 2px #5B5B5B;border-radius:0px; font-family:'Arial'; font-size:14px; padding-left:0px; padding-right:0px;"/> 
      </label>
    <? }   ? >
    <input type="submit" name="button" id="button" value="Enviar" />
    </form>

salvar.php
<? php   
    $categoria = $_POST["categorias"];   
    $tipo = $_POST["tipos"];   
    $arquivoImagem = $_POST["arquivo"];   
    $numeracao = 1;
    foreach($categoria as $valores => $maiorIgual) {

    // Faz a inserção dos dados na MYSQL
    $sql = "INSERT INTO `medias` SET `cat`='".$categoria[$valores]."',  `tipos`='".$tipo[$valores]."',  `arquivo`='".$arquivoImagem[$valores]."'"; 
    $consulta = mysql_query($sql);
    if($consulta) {
    echo'<center>';
    echo " Item ".$numeracao++."  Cadastrado com Sucesso<br/>";
    }else{
    echo " Item ".$numeracao++."  Erro ao cadastrar<br/>";
    echo'</center>';
    }
    } ? >

A:

Não use $arquivoImagem = $_POST["arquivo"]; use $arquivoImagem = $_FILES["arquivo"];

$_FILES['userfile']['name']
O nome original do arquivo na máquina do cliente. 
$_FILES['userfile']['type']
O tipo mime do arquivo, se o navegador fornecer essa informação.  Um exemplo poderia ser image/gif.  O tipo mime no entanto não é verificado pelo PHP portanto não considere que esse valor será concedido. 
$_FILES['userfile']['size']
O tamanho, em bytes, do arquivo enviado. 
$_FILES['userfile']['tmp_name']
O nome temporário com o qual o arquivo enviado foi armazenado no servidor. 
$_FILES['userfile']['error']
O código de erro associado a esse upload de arquivo. 

Nota: Realmente não vejo motivo para usar foreach se a array não é associativa. 

Exemplo:
foreach ($categoria as $valores => $maiorIgual) {
    $name = $_FILES['file'][$valores]['name'];
    $tmp_name = $_FILES['file'][$valores]['tmp_name'];

    $error = $_FILES['file'][$valores]['error'];
    if ($error ! == UPLOAD_ERR_OK) {
        echo 'Erro ao fazer o upload de:', $name, ' / Erro: ', $error;
    } elseif (move_uploaded_file($tmp_name, $location .  $name)) {
        $sql = "INSERT INTO `medias` SET `cat`='".$categoria[$valores]."',  `tipos`='".$tipo[$valores]."',  `arquivo`='".$arquivoImagem[$valores]."'"; 
        //Resto do seu código  
    }
}

Recomendo que se não usar arrays associativas, use o for normal ao invés de foreach
$categoria = $_POST["categorias"];   
$tipo = $_POST["tipos"];   
$arquivoImagem = $_POST["arquivo"];

$total = count($arquivoImagem);

if ($total ! == count($tipo) || $total ! == count($categoria)) {
    //Adicionei este if só como segurança com problemas no formulário
    echo 'Quantidade de itens é invalida';
} else {
    for ($i = 0; $i < $total; $i++) {
        $name = $_FILES['file'][$i]['name'];
        $tmp_name = $_FILES['file'][$i]['tmp_name'];

        $error = $_FILES['file'][$i]['error'];
        if ($error ! == UPLOAD_ERR_OK) {
            echo 'Erro ao fazer o upload de:', $name, ' / Erro: ', $error;
        } elseif (move_uploaded_file($tmp_name, $location .  $name)) {
            $sql = "INSERT INTO `medias` SET `cat`='".$categoria[$i]."',  `tipos`='".$tipo[$i]."',  `arquivo`='".$arquivoImagem[$i]."'"; 
            //Resto do seu código  
        }
    }
}

Para entender melhor o uso de arrays em HTML: http://php.net/manual/pt_BR/faq.html.php#faq.html.arrays

