Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MBarros

[Resolvido] Como renomear arquivos enviados para pasta?

Recommended Posts

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

<?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

Ó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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.