Jump to content
eduardaarosaa

Mudar o nome das imagens de um array do tipo file

Recommended Posts

Eu estou salvando no banco de dados um array, como nome das imagens que são adicionadas por campos dinâmicos.

E movendo para um pasta as imagens.

Eu queria mudar o nome das imagens colocando na frente de cada nome um número randômico, porém da maneira que estou fazendo só está pegando no primeiro nome no índice [0] as demais não pegam o número.

<?php
include "../telas/sessao.php";
include "conexao.php";
$numero = rand();
$valor_total = $_POST['valor_total'];
$quantidade = implode('-',$_POST['quantidade']);
$carteira = implode(',', $_POST['carteira']);
$tipo = implode(',',$_FILES['file']['type']);
foreach($_FILES['file']['name'] as $nome => $a){
$nome = implode(',', $_FILES['file']['name']);
 
$nome_novo = str_place($nome,$numero, $nome);

echo $nome_novo;

    $tamanho = implode(',',$_FILES['file']['size']);

    $dia = mktime(date('d'), date('m'), date('y'));

    $data1 = gmdate('d/m/Y',$dia);

    //print $data1;

    $time = mktime(date('H')-3, date('i'), date('s'));

    $hora = gmdate("H:i:s", $time);

    foreach( $_FILES['file']['name'] as $key =>$name){

        $nome1 =  $numero . ($_FILES['file']['name'][$key]);

         move_uploaded_file( $_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\$nome1");    
    }

 

Share this post


Link to post
Share on other sites

Segue exemplo:

 

<?php

$folder_path = "C:\\xampp\\htdocs\\otc\\anexos\\";

foreach ( $_FILES [ 'file' ][ 'tmp_name' ] as $key => $a ) {
	# ARQUIVO CONF
	$f_name = $_FILES [ 'file' ][ 'name' ][ $key ];
	$f_tmp_name = $_FILES [ 'file' ][ 'tmp_name' ][ $key ];
	$f_ext = pathinfo ( $f_name, PATHINFO_EXTENSION );

	# NOVO NOME
	$new_name = uniqid ( time () ) . '.' . $f_ext;

	# CAMINHO + NOME
	$f_p_name = $folder_path . $new_name;

	# MOVE
	if ( @ move_uploaded_file ( $f_tmp_name, $f_p_name ) ) {
		echo "Enviado com sucesso!!!";
	} else {
		echo "Error!!!";
	}
}

 

Share this post


Link to post
Share on other sites
1 hora atrás, ShadowDLL disse:

Segue exemplo:

 


<?php

$folder_path = "C:\\xampp\\htdocs\\otc\\anexos\\";

foreach ( $_FILES [ 'file' ][ 'tmp_name' ] as $key => $a ) {
	# ARQUIVO CONF
	$f_name = $_FILES [ 'file' ][ 'name' ][ $key ];
	$f_tmp_name = $_FILES [ 'file' ][ 'tmp_name' ][ $key ];
	$f_ext = pathinfo ( $f_name, PATHINFO_EXTENSION );

	# NOVO NOME
	$new_name = uniqid ( time () ) . '.' . $f_ext;

	# CAMINHO + NOME
	$f_p_name = $folder_path . $new_name;

	# MOVE
	if ( @ move_uploaded_file ( $f_tmp_name, $f_p_name ) ) {
		echo "Enviado com sucesso!!!";
	} else {
		echo "Error!!!";
	}
}

 

Desta forma só add uma imagem, eu quero adicionar várias imagens ao mesmo tempo .... Mas obrigada por tentar ajudar (:

Share this post


Link to post
Share on other sites

Ja tentou assim:

Obs: faço a mínima ideia se vai funcionar! só um palpite.


foreach( $_FILES['file']['name'] as $key =>$name){ 
  $rand[$key] = rand();
  $nome1[$key] = $rand[$key] . ($_FILES['file']['name'][$key]); 
  move_uploaded_file( $_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\".$nome1[$key]); 
}

 

Share this post


Link to post
Share on other sites
11 horas atrás, luannsr12 disse:

Ja tentou assim:

Obs: faço a mínima ideia se vai funcionar! só um palpite.



foreach( $_FILES['file']['name'] as $key =>$name){ 
  $rand[$key] = rand();
  $nome1[$key] = $rand[$key] . ($_FILES['file']['name'][$key]); 
  move_uploaded_file( $_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\".$nome1[$key]); 
}

 

 Obrigada por tentar me ajudar ... Mas meu problema não está em mover o arquivo ele move normal 

Meu insert está inserindo assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

E eu queria que ele inseri-se assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,560156050duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

No mesmo campo: '560156050barco.png,560156050duda.jpg' duas fotos

 

Eu até tentei fazer assim: 

$nome = $numero . ($_FILES['file']['name']);

Ai ele fica assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

Ele pega as duas fotos, porém só a primeira com o $numero. 

Se tiver alguma sugestão, ou outra forma de fazer estou aberta 

Muito Obrigada

Share this post


Link to post
Share on other sites

Oi, fiz um exemplo para renomear todas a imagens do array $_FILES, só não fiz a parte de mover as imagens, só você complementar, segue:

 

<?php

if (isset($_POST['sendImagens'])) {
	foreach($_FILES as $imagem){
		$novas_imagens = [];
		foreach ($imagem['name'] as $key => $img){
			$md5 = md5(uniqid($key[$img]));
			$novas_imagens[] =  $md5.'_'.$img;
		}
	}
  	// imprime o array com os novos nomes
	echo "<pre>";
	var_dump($novas_imagens);
}

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Exemplo Upload</title>
</head>

<body>
	<form method="POST" action="#" enctype="multipart/form-data">
		<input type='file' multiple name='imagens[]' />
		<input type='submit' value='Enviar' name='sendImagens' />
	</form>
</body>

</html>

 

Share this post


Link to post
Share on other sites
Em 31/05/2019 at 11:28, eduardaarosaa disse:

 Obrigada por tentar me ajudar ... Mas meu problema não está em mover o arquivo ele move normal 

Meu insert está inserindo assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

E eu queria que ele inseri-se assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,560156050duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

 

No mesmo campo: '560156050barco.png,560156050duda.jpg' duas fotos

 

Eu até tentei fazer assim: 

$nome = $numero . ($_FILES['file']['name']);

Ai ele fica assim: 

insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values( '1','1','3asahushahu','image/png,image/jpeg','560156050barco.png,duda.jpg','143810,6264','paulo@gmail.com','31/05/2019','16:50:57','0')

Ele pega as duas fotos, porém só a primeira com o $numero. 

Se tiver alguma sugestão, ou outra forma de fazer estou aberta 

Muito Obrigada

 

Segue exemplo de possível solução:

 

SQL A SER UTILIZADA

CREATE TABLE ordens (
	idOrdem INT NOT NULL AUTO_INCREMENT,
	tipo TEXT NOT NULL,
	nome TEXT NOT NULL,
	PRIMARY KEY (idOrdem)
);

 

CÓDIGO PHP

<?php

if ( $_FILES ) {
	# ARMAZENA OS ARQUIVOS
	$st_files = "";
	$st_mimes = "";

	# PATH
	$folder_path = "C://....";

	foreach ( $_FILES [ 'file' ][ 'tmp_name' ] as $key => $a ) {
		# ARQUIVO CONF
		$f_name = $_FILES [ 'file' ][ 'name' ][ $key ];
		$f_tmp_name = $_FILES [ 'file' ][ 'tmp_name' ][ $key ];
		$f_ext = pathinfo ( $f_name, PATHINFO_EXTENSION );

		# NOVO NOME
		$new_name = uniqid ( time () ) . '.' . $f_ext;

		# CAMINHO + NOME
		$f_p_name = $folder_path . $new_name;

		# ARMAZENA O MIME DOS ARQUIVO
		$st_mimes .= mime_content_type ( $f_tmp_name ) . ',';

		# ARMAZENA O NOME DO ARQUIVO
		$st_files .= $new_name . ',';

		# CÓDIGO DO UPLOAD
		# ...
	}

	# INSERE NO BANCO
	# SIMPLE CONN
	$conn = new PDO ( 'mysql:host=localhost;dbname=sua_tabela', 'root', '' );

	# INSERE
	$inserir = $conn->prepare ( 'INSERT INTO ordens (tipo, nome) VALUES (?, ?)' );
	$inserir->bindValue (1, rtrim ( $st_mimes, ',' ) );
	$inserir->bindValue (2, rtrim ( $st_files, ',' ) );
	$inserir->execute ();

	if ( $inserir->rowCount () > 0 ) {
		echo "Sucesso!!!";
	}
}

?>

<!DOCTYPE HTML>
<html>
	<head>
		<title> EXAMPLE </title>
	</head>

	<body>
		<form action="#" method="post" enctype="multipart/form-data">
			<label for="file">Selecione as Imagens</label>
			<input type="file" id="file" name="file[]" multiple />
			<br />
			<input type="submit" value="Enviar" />
		</form>
	</body>
</html>

 

RESULTADO

image.png.c58099cb3c24ab9b0ac2c1604a78de84.png

Share this post


Link to post
Share on other sites

Solução que consegui fazer ... 

 

<?php
include "../telas/sessao.php";
include "conexao.php";
$numero = rand();
$valor_total = $_POST['valor_total'];
$quantidade = implode('-', $_POST['quantidade']);
$carteira = implode(',', $_POST['carteira']);
$tipo = implode(',', $_FILES['file']['type']);
$nome = $_FILES['file']['name'];

$result = count($nome);
// echo $result;

$novo = [];
for ($i = 0; $i < $result; $i++) {

  $hehe = $numero . $nome[$i];
  array_push($novo, $hehe);

  //print_r($novo);

}
$arra = implode(',', $novo);
//print_r($arra);



//var_dump($nome);
$tamanho = implode(',', $_FILES['file']['size']);





$dia = mktime(date('d'), date('m'), date('y'));

$data1 = gmdate('d/m/Y', $dia);


//print $data1;

$time = mktime(date('H') - 3, date('i'), date('s'));

$hora = gmdate("H:i:s", $time);




foreach ($_FILES['file']['name'] as $key => $name) {

  $nome1 =  $numero . ($_FILES['file']['name'][$key]);

  move_uploaded_file($_FILES['file']['tmp_name'][$key], "C:\\xampp\\htdocs\\otc\\anexos\\$nome1");
}


$logado = $_SESSION['email'];

$inserir = "insert into ordens(valor_total,quantidade,carteira,tipo,nome,tamanho,email,data,hora,status)values(
  '$valor_total','$quantidade','$carteira','$tipo','$arra','$tamanho','$logado','$data1','$hora','0')";


$resposta = mysqli_query($link, $inserir);
//echo "Error: " . $inserir . "<br>" . mysqli_error($link);

 
    
//     }

if($resposta == true){
    echo ("<script>
    window.alert('Ordem criada com sucesso!')
    window.location.href='../telas/minhas_ordens.php';
    </script>");
}else{
    echo ("<script>
    window.alert('Erro entre em contato com a Bloco1!')
    window.location.href='../telas/criar_ordem.php';
    </script>");
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By leonardoc.g
      Quando eu tento fazer conexão no banco de dados pelo Dreamweaver me aparece essa mensagem:
       
      your php server doesn't have the MySQL module loaded or you cant't use the mysql_(p)connect functions
       
       
    • By Julie_santiago
      Olá!
      Pessoal, preciso muito de um help urgente. Estou tentando fazer uma simples query ao banco de dados, usando o Axios. Mas, não importa a forma de fazer a requisição, o Axios não funciona. O HTML está abaixo, onde chamo a função enviaDados() através do onsubmit.
      <div class="input-group md-form"> <form method="get" onsubmit="enviaDados()" name="buscar"> <input type="text" id="Form-search2" class="form-control" name="nomeReagente"> <label for="Form-search2">Search</label> <input type="submit" name="pesquisar" value="buscar"> </form> <span class="input-group-text dark lighten-2" id="basic-text1"> <i class="fas fa-search text-dark" aria-hidden="true"></i> </span> </div> Meu arquivo main.js que contém a função enviaDados().
      function enviaDados(){ let nome = buscar.nomeReagente.value recebeDados(nome); } Dentro dessa função, estou chamando outra: recebeDados() que executa a requisição Axios. Passo como parâmetro o valor lá do meu input. OBS.: Meu código está assim, aparentemente confuso, porque o objetivo é ter funções que enviam os dados dos meus formulários e outras funções (genéricas) para receber e tratar esses dados. Abaixo a função recebeDados():
      function recebeDados(nome_reagente){ axios.get('http://localhost/Quimica/php/recebe_json.php', { params: { nome } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log('Não foi possível realizar a requsição: '+error); }) .finally(function () { }); } Não importa o que eu faça, sempre cai no CATCH  - request aborted. Preciso muito resolver esse problema, mas não faço ideia do que pode ser. Relevem qualquer "noobice" porque estou aprendendo o básico ainda.
       
    • By JeanTDZ
      Olá pessoal!
       
      Estou com uma tremenda dificuldade.
      Tenho um formulário na qual está funcionando e cadastrando, porém preciso que o meu botão adicionar autorizado funcione e mostre o que foi digitado para o e-mail. As informações na vdd é enviada para o e-mail e o que será enviado é oque será digitado.
       
      Simplificando ->
      Tenho um botão que adiciona 2 inputs (NOME E SALDO) e conforme for clicando nesse botão, vai adicionando mais campos.
      Dúvida: Como posso fazer com que grave o que foi digitado nesses campos?
       
      Segue o que eu tentei fazer até agora:

      HTML
      <!DOCTYPE html> <html>     <head>         <title>Chame Taxi PrePago</title>                 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />         <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>         <link rel="icon" type="image/x-icon" href="https://www.flaticon.com/premium-icon/icons/svg/1361/1361253.svg" />         <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>     </head>     <body>         <br />         <div class="container" style="width:100%; max-width:600px">             <h2 align="center">Pré-Pago</h2>             <br />             <div class="panel panel-default">                 <div class="panel-heading"><h4>Registrar</h4></div>                 <div class="panel-body">                     <form method="post" id="register_form">                         <?php echo $message; ?>                         <div class="form-group">                             <label>Nome Completo</label>                             <input type="text" name="user_name" style="text-transform:uppercase" class="form-control" pattern="[a-zA-Z ]+" required />                         </div>                         <div class="form-group">                             <label>E-mail</label>                             <input type="email" name="user_email"  style="text-transform:uppercase" class="form-control" required />                         </div>                         <div class="form-group">                             <label>CEP</label>                             <input type="text" name="campob" id="cep" value="" maxlength="9" onblur="pesquisacep(this.value);" class="form-control">                         </div>                         <div class="form-group"> <table id="myTable" class="table"> <a class="btn btn-primary" onclick="myFunction()" href="#" role="button">Adicionar Autorizado</a>             <thead>                 <tr>                     <th>NOME</th>                     <th>SALDO</th>                 </tr>             </thead>         </table>                         <div class="form-group">                             <input type="submit" name="register" id="register" value="Validar" class="btn btn-info" />                         </div>                     </form>                 </div>             </div>         </div>     </body> </html> JAVASCRIPT 
       
          <script>         var incremento = -1;         function myFunction() {             incremento++;             var table = document.getElementById("myTable");             var row = table.insertRow(0);             var cell1 = row.insertCell(0);             var cell2 = row.insertCell(1);             var cell3 = row.insertCell(2);             var cell4 = row.insertCell(3);             cell1.innerHTML = "NOME";             cell2.innerHTML = '<input type="text" name="name1[${incremento}]" >';             cell3.innerHTML = "SALDO";             cell4.innerHTML = '<input type="text" name="saldo[${incremento}]" size="15px" >';         }     </script>  
    • By gramosiri2
      Oi estou tentando passar um valor através de uma variável em uma query, porém não está mostrando o resultado que eu quero.
       
      Aqui eu pego o ultimo id do pedido
      <?php while($row = $consulta_pedido2->fetch_assoc()){ echo $row['id_pedido']; }?> E aqui eu faço a query e passo variável...
      $query ="SELECT itempedido.id_itempedido, itempedido.valor, ... FROM itempedido INNER JOIN produto ON ... WHERE itempedido.pedido_id = '$row'"; No caso onde está a variável $row, se eu colocar o numero do pedido manualmente, me retorno os itens daquele pedido, agora com a variável não está mostrando, alguma ideia?
    • By gustavodubarbosa
      Estou criando uma página que realize monitoramento de atividades.
      No meu código PHP defini uma variável que busca a data atual, depois passei o parâmetro de conexão com o banco de dados, depois criei um while para buscar as informações, dentro do while criei um if, a condição if é que se a variável data for igual a data cadastrada na atividade, exiba toda a atividade cadastrada. Mas o problema é que o if não está controlando essa condição, está passando direto e exibindo tudo.
      <?php $number = ('23'); $data = date("Y-m-d"); echo "$data"; /*Aqui realizo a conexão com o banco de dados, passo os dados para conectar, caso dê algum erro, o sistema me retorna uma mensagem de erro*/ $conect = mysqli_connect('localhost','root','','projeto_pessoal') or die ('Erro na conexão com o banco de dados'); /*Aqui passo o comando para realizar a busca no banco de dados, aplicando o filtro de pesquisa*/ $result_pesquisa = "SELECT * FROM cadastrar_atividade"; /*Neste momento, mando a execução, preciso passar como parametro a variável com a conexão e a variável com o comando, caso dê erro, será exibido uma mensagem*/ $resultado_pesquisa = mysqli_query($conect, $result_pesquisa); /*Aqui é aberto um laço de repetição para fazer uma varredura no banco de dados, em seguida realizo a exibição do que foi encontrado*/ ?> <h1>Resultado da Pesquisa</h1> <?php while($rows_pesquisa = mysqli_fetch_array($resultado_pesquisa)){ if($rows_pesquisa['prazo'] == $data) echo '<p class="title">'.'ID da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['id'].'<br>'.'</p>'; echo '<p class="title">'.'Nome da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['nome_atividade'].'<br>'.'</p>'; echo '<p class="title">'.'Descrição da atividade: '.'</p>'.'<p class="result">'.$rows_pesquisa['desc_atividade'].'<br>'.'</p>'; echo '<p class="title">'.'Prioridade: '.'</p>'.'<p class="result">'.$rows_pesquisa['prioridade'].'<br>'.'</p>'; echo '<p class="title">'.'Prazo: '.'</p>'.'<p class="result">'.$rows_pesquisa['prazo'].'<br>'.'</p>'; echo 'carregado'; echo '<hr></hr>'; } ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.