MBarros 0 Denunciar post Postado Março 11, 2010 Pessoal, Envio 4 arquivos para uma pasta e mais alguns dados para um BD. Tudo funciona de forma plena. Mas, minha questão é: como renomear automaticamente os 4 arquivos enviados? Segue a url que contém meu código. Pelo que pesquisei, tenho que fazer explode para separar o nome das imagens de suas extensões, alterar o nome e juntá-las novamente (desculpem se eu estiver errado) mas não sei como fazer isso. Podem me auxiliar? <?php mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor."); mysql_select_db("lab") or die ("Não foi possível selecionar a base de dados"); $numeroCampos = 4; $titulo = $_POST["titulo"]; $resumo = $_POST["resumo"]; $producao = $_POST["producao"]; $detalhes = $_POST["detalhes"]; $imagens = implode(", ", $_FILES["imagens"]["name"]); for ($i = 0; $i < $numeroCampos; $i++) { $caminho = "../uploads/" . $titulo; $nomeArquivo = $_FILES["imagens"]["name"][$i]; $nomeTemp = $_FILES["imagens"]["tmp_name"][$i]; $novonome = date("dmYHis") . "." . $ext; if (!file_exists($caminho)) { @mkdir($caminho, 0775); } if (move_uploaded_file($nomeTemp, $caminho ."/". $novonome)) { } else { echo "Erro ao enviar os arquivos."; } } echo "Arquivos enviados com sucesso."; mysql_query("INSERT INTO `trabalhos` (imagens, titulo, resumo, producao, detalhes) VALUES('$imagens', '$titulo', '$resumo', '$producao', '$detalhes')"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
ozorio silva 0 Denunciar post Postado Março 11, 2010 <?php mysql_connect("localhost","root","") or die ("Não foi possível conectar ao Servidor."); mysql_select_db("lab") or die ("Não foi possível selecionar a base de dados"); $numeroCampos = 4; $titulo = $_POST["titulo"]; $resumo = $_POST["resumo"]; $producao = $_POST["producao"]; $detalhes = $_POST["detalhes"]; $imagens = implode(", ", $_FILES["imagens"]["name"]); for ($i = 0; $i < $numeroCampos; $i++) { $caminho = "../uploads/" . $titulo; $nomeArquivo = $_FILES["imagens"]["name"][$i]; $nomeTemp = $_FILES["imagens"]["tmp_name"][$i]; $novonome = date("dmYHis") . "." . $ext; $md5 = md5(uniqid(rand()));// isso vai gerar um hash md5 ramdomico assim renomeia os arquivos enviados // exemplo: 4343334gdfgdg34-foto1.jpg // exemplo: 856645664645444-foto2.jpg e assim por diante tenta ai poe o $md5 antes do nome da foto e da extenção if (!file_exists($caminho)) { @mkdir($caminho, 0775); } if (move_uploaded_file($nomeTemp, $caminho ."/". $novonome)) { } else { echo "Erro ao enviar os arquivos."; } } echo "Arquivos enviados com sucesso."; mysql_query("INSERT INTO `trabalhos` (imagens, titulo, resumo, producao, detalhes) VALUES('$imagens', '$titulo', '$resumo', '$producao', '$detalhes')"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Março 12, 2010 Ótimo @ozorio silva! Consegui fazer o que eu queria, mas esbarrei numa outra questão: $md5 = md5(uniqid(rand())); $ext = strtolower(end(explode('.', $_FILES["imagens"]["name"][$i]))); Como fazer o implode de $md5 e $ext visto que $imagens = implode(", ", $md5 . '.' . $ext); Não funciona! (Preciso 'juntar' os nomes das imagens agora em md5 para envia-las para o BD. Como?) Alguém saberia me guiar em como fazer isso? Obrigado! Ainda não compreendi... :( Como juntar : $md5 = md5(uniqid(rand())); e $ext = strtolower(end(explode('.', $_FILES["imagens"]["name"][$i]))); num implode para que os nomes das imagens separados por virgula, vão para o banco de dados? Eu fiz assim: $imagens = implode(", ", array($md5 . '.' . $ext)); Mas apenas o nome de uma das imagens vai para o banco de dados. Como fazer com que as outras três (num total de 4 imagens) apareçam no bd, separados por virgula através de implode? Compartilhar este post Link para o post Compartilhar em outros sites
MBarros 0 Denunciar post Postado Março 12, 2010 Moderação, pode marcar como RESOLVIDO Para aqueles que possam porventura se deparar com o mesmo problema, eis a solução: Basta colocar o $imagens[] ... dentro de um for(...) $imagens[] = sprintf('%s.%s',$md5,$ext); :) Compartilhar este post Link para o post Compartilhar em outros sites