Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Tenho este código:
<?php
foreach($_FILES as $arquivo => $valor)
{
if (empty($valor['name']))
{
unset($_FILES[$arquivo]);
}
else
{
if(count($valor['name']) > 4)
{
$nomes = implode(', ',$valor['name']);
}
else
{
$nomes = substr(implode(', ',$valor['name']), 2);
}
}
}
echo '<pre>';
print_r($nomes);
echo '</pre>';
?>Estou passando arquivos via upload pela caixa:
<input type=\'file\' name=\'arquivo[]\' class=\'arquivo\' />
Estou com dúvida de como renomear estes arquivos passados.
Obrigado.
Olá,
Obrigado pela resposta Beraldo.
Olha só, eu quero renomeá-los, fazer o upload com este novo nome e gravar o mesmo no banco, mas olha só a minha tarefa, estou unindo todos os nomes numa mesma varíavel separando os nomes por vírgula.
Vou conseguir desta maneira, ou de que outra forma eu posso usar?
Obrigado.
o ideal é não usar espaços em nomes de arquivos. se quiser separar, pode usar _ ou -.
Mas acho melhor você usar uma função como uniq(), para gerar um nome único, sem haver o risco de sobreescrever arquivos.
Você pode ter dois campos no banco de dados: um para o nome com vírgulas e outro para o nome gerado
Cara tu vai me desculpar, mas to muito perdido pra fazer essa tarefa.
Olha só o que tentei:
$nome = substr($valor['name'], 0, -4); // Pega o nome tirando .extensao
$n_nome = substr(md5(uniqid($nome)), 0, 16); // Novo nome de 16 caracteres
$extensao = substr($valor['name'], -4, 4); // Pego o .extensao
$nome_c = $n_nome.$extensao; // Uno o nome + extensao
Lógico que acima estou trabalhando com string, mas tentei explodir, unir etc e sempre dá array to string convertion bla bla bla.
Cara vou tentar esclarecer a minha necessidade:
- Tenho um campo (jquery multiple upload) que faz no máximo 4 envios;
- Recebendo estes arquivos, tenho que renomeá-los individualmente, lógico;
- Fazer o upload;
Acho que fui claro. Tenta me ajudar aí cara.
Vlw.
gere os quatro novos nomes - preferencialmente, coloque-os em um array - e depois use implode como você havia feito
$nomes = implode(',',$novos_nomes);
pode alterar o nome na função move_uploaded_file
move_uploaded_file($tmp, 'nome_que_desejar');
Dá para usar rename() se quiser renomear um arquivo sem movê-lo