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 heenrique
      Boa Noite
       
      amigos tenho um select no qual me retorna o seguinte 
      SELECT * FROM sis_suporte WHERE tecnico = '1' AND abertura < '2019-10-30'; +----+--------------------------------------+------------+---------------------+---------------------+-------+---------+----------------+-----------------------------+------------------+----------------------------+---------------------+------------+--------------+-------+---------+-------------+------------------------------------------------------------------+ | id | uuid_suporte | assunto | abertura | fechamento | email | status | chamado | nome | login | atendente | visita | prioridade | ramal | reply | tecnico | login_atend | motivo_fechar | +----+--------------------------------------+------------+---------------------+---------------------+-------+---------+----------------+-----------------------------+------------------+----------------------------+---------------------+------------+--------------+-------+---------+-------------+------------------------------------------------------------------+ | 36 | 1901294b-80e6-4389-9059-fa090c09e382 | Outros | 2019-09-14 19:27:42 | 2019-10-17 19:35:20 | NULL | aberto | 14091919272653 | Alex Ramos dos Santos | alex.santos | Letícia Paula de Oliveira | 2019-10-17 16:27:15 | normal | SAO PAULO | nao | 1 | leticia | TÉCNICO HENRIQUE FINALIZOU A ORDEM: CLIENTE BLOQUEADO | | 37 | af8da3e7-9dbc-45b9-945b-d50cd45d9ea6 | Outros | 2019-09-14 19:37:13 | 2019-10-04 21:11:25 | NULL | fechado | 14091919370623 | Alexsandro Santos Braz | alesysandro.braz | Letícia Paula de Oliveira | 2019-10-04 16:37:15 | normal | SAO PAULO | nao | 1 | leticia | TÉCNICO HENRIQUE FINALIZOU A ORDEM: | | 39 | 2b03e9d4-50ca-4713-8149-88fe083fb9d9 | Instalacao | 2019-09-16 17:00:22 | 2019-10-03 22:38:23 | NULL | fechado | 16091916593665 | Henrique Gabriel de Almeida | teste | Letícia Paula de Oliveira | 2019-10-03 08:00:15 | normal | POUSO ALEGRE | sim | 1 | leticia | TÉCNICO HENRIQUE FINALIZOU A ORDEM: QWE | | 40 | b2c0fc23-0a5c-46ae-a8b8-a8641b1d53c4 | Outros | 2019-10-03 23:21:22 | 2019-10-03 23:36:51 | NULL | fechado | 03101923210987 | Henrique Gabriel de Almeida | teste | sistema | 2019-10-03 14:21:15 | normal | POUSO ALEGRE | nao | 1 | admin | TÉCNICO HENRIQUE FINALIZOU A ORDEM: RELIGUEI A FONTE DO CLIENTE | | 41 | e9aaf792-56c6-4fe1-b8c3-aa51338f65d1 | Outros | 2019-10-03 23:23:02 | 2019-10-03 23:46:01 | NULL | fechado | 03101923225491 | Cintia Rocha Vaz | cintia.vaz | sistema | 2019-10-03 17:22:15 | normal | SAO PAULO | nao | 1 | admin | TÉCNICO HENRIQUE FINALIZOU A ORDEM: 12 | +----+--------------------------------------+------------+---------------------+---------------------+-------+---------+----------------+-----------------------------+------------------+----------------------------+---------------------+------------+--------------+-------+---------+-------------+------------------------------------------------------------------+ 5 rows in set (0.00 sec) e quando imprimo sai um por um, gostaria de agrupar por data de abertura ex.
       
      2019-09-14
      Alex Ramos
      Alexsandro
       
      2019-09-16
      Henrique
       
      2019-10-03
      Henrique
      Cintia
       
      como agrupar isso em php,
       
      esse e o cod onde eu imprimo
       
      <?php while($dados = mysqli_fetch_assoc($resultado_os)){ if ($dados['status'] == 'aberto'){ ?> <div class='row'> <div class='col-md-12'> <a href='os.php?os=<?php echo $dados['chamado']; ?>'> <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-agua'><i style='padding-top: 35%;' class='ion ion-ios-gear-outline'></i></span> <div class='info-box-content'> <span class='info-box-text'><b>ABERTA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a> </div> </div> <?php } if ($dados['status'] == 'fechado'){ ?> <div class='row'> <div class='col-md-12'> <a href='os.php?os=<?php echo $dados['chamado']; ?>'> <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span> <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['fechamento']))->format('d/m/Y - H:i'); ?></span> </a> </div> </div> <?php } } ?> </div> </div> </div> </section> </div>  
    • By avelar.avelar
      Boa Tarde galera, 
       
      Preciso criar um Test de Recursividade na mesma tabela:
       
      Tabela: Biblioteca
      Campos:
      ID
      Titulo
      Descricao
      Biblioteca-ID(Foreign Key)
       
      Obrigado
    • By LRDSILVA3
      Pessoal Boa Tarde ,Tudo certo?
      Estou com um projeto para aprendizagem (já que só tenho conhecimentos de css e html) e upgrade da firma onde trabalho e não estou conseguindo salvar os valores do formulário no banco de dados,a conexão é feita porem salva todos os valores como null.
      <?php
      $servername = "192.168.1.109";
      $database = "cadastrokm";
      $username = "teste";
      $password = "123456";
      // Create connection
      $conn = mysqli_connect($servername, $username, $password, $database);
      // Check connection
      if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
      }
       
      echo "Connected successfully";
      $funcionarioKm = isset( $_POST['funcionarioKm']); 
          $veiculoKm = isset($_POST['veiculoKm']);
          $kmInicial = isset($_POST['kmInicial']);
          $kmFinal = isset($_POST['kmFinal']);
       
      $sql = "INSERT INTO km (funcionarioKm,veiculoKm,kmInicial,kmFinal) 
          VALUES ('$funcionarioKm','$veiculoKm','$kmInicial',
          '$kmFinal')";
      if (mysqli_query($conn, $sql)) {
            echo "New record created successfully";
      } else {
            echo "Error: " . $sql . "<br>" . mysqli_error($conn);
      }
      mysqli_close($conn);
      ?>
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
      <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

      </head>
      <body>
        
          <div class=container>
      <section>
          <!-- Página de Cadastro de KM -->
          <h1>Cadastro de Km</h1>
          <hr><br><br>
          <form method="post" action="conexao.php">
          <p class="font-weight-bold">Favor Selecione seu Nome:</p>
                <select id="funcionarioKm"  name="funcionarioKm"required autofocus>
                    <option>Motorista</option>
                    <option>Almir</option>
                           <option>Maykon</option>
                                      <option>Jorge</option>    
                                  </select>
      </br></br>
                <p class="font-weight-bold">Favor Selecione o Veiculo:</p>
                <select id="veiculoKm" value="veiculoKm " name="veiculoKm"required>
                    <option>Veiculo</option>
                    <option>L200</option>
                           <option>Strada 01</option>
                                      <option>Strada 02</option>    
                                      <option>Caminhão 01</option>    
                                  </select> 
       </br></br>
                 <label for="litros"><p class="font-weight-bold">Informe a Quilometragem Inicial:</p></label>
              <input type="number" id="kmInicial" name="kmInicial" required/>
      </br></br>
              <label for="litros"><p class="font-weight-bold">Informe a Quilometragem Final:</p></label>
              <input type="number" id="kmFinal" name="kmFinal" required />
      </br></br>
              <input type="submit" value="Salvar"    class="btn btn-primary btn-md">
              <input type="reset" value="Limpar"class="btn btn-primary btn-md" >
              <br><br>
      </form>
      </section>
      </div>
      </body>
      </html>
       

       
       
    • By proflupin
      criei uma página que busca alguns dados no BD e retornar em forma de collapse. Como existe um WHILE executando o collapse, ele sempre o executa com o mesmo ID, ou seja, se eu tiver 20 collapse, todos vão ser abertos ao clicar no primeiro.
      A dúvida é, como eu posso criar um novo ID para o collapse a cada loop do While?
      Código:
       
      <?php while($result_inners = mysqli_fetch_object($result_inner)){ ?> <div class="card-footer "> <a class="text-muted" data-toggle="collapse" href="#collapse1" role="button" aria-expanded="false" aria-controls="collapseExample"> <i class="fas fa-comment-alt"></i> <?php if(!empty($result_inners->nome_completo)) echo $result_inners->nome_completo . " respondeu..."; else echo "Aguardando resposta do técnico." ?> </a> <div class="collapse " id="collapse1"> <div class="bg-white mt-2 p-2"> <?php echo nl2br($result_inners->mensagem) ?> </div> <span style="color: #6c757d; float: right;"><?php echo date('d/m/Y H:i', strtotime($result_inners->data_hora)) ?></span> </div> </div> <?php } ?>  
    • By elielton
      Preciso usar um regex 
      qual expressão reconhece: 03-190325
       
       
      Alguém pode me ajudar?
       
       
×

Important Information

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