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 adrianno
      Olá, estou com a seguinte dúvida com uso do JWT , trabalho com PHP a um tempo e estou migrando alguns projetos para formato API REST,  mas também começando a trabalhar com JS,REACT, NODE etc e a dúvida basicamente se aplica independente da linguagem uma vez  que o formato JWT é padrão.
      Vamos lá,   imagine que ao fazer um login bem sucedido o usário receba um token JWT  padrão, e no payload  coloquei o ID: "ff0eb2864feb22354747f8c85d42ccb5" e EMAIL :  "email@teste.com" do usuário junto com outras info padrão de um JWT,   mas qual pe a forma mais correta de validar este token?  usando métodos de verificar a assinatura, ok,   desmontando e montando novamente o token passado para comparar, OK  mas como eu verifico a integridade do usuário, imagine que eu de alguma forma um usuário malicioso obtenha o token de outro usuário, se ele enviar este token em uma requisição, ele seria aceito, mesmo sem ter que fazer o login de usuário, uma vez  que a rota em questão vai verificar o token e o mesmo teoricamente vai funcionar e este teria acesso a API em nome de outro usuário. Quais são as formas corretas de se trabalhar com JWT?
    • By leandro123456789
      <div id="direito">
             
             <?php 
                      
                 $link = filter_input(INPUT_GET, 'link');
                 
                 $pag[1] = "../admin/home.php";
                 $pag[2] = "../admin/classes/Lista.php";
                 
              
              
                 if(!empty($link)){
                     
                     if(file_exists($pag[$link]))
                        
                      {
                         include $pag[$link];
                      
                      }
                        
                      else
                      { 
                         
                          include "home.php";
                      
                      }
                     
                 }else{
                     include "home.php";
                 }
              
              ?>
             
          </div>
       
       
      Estou tentando colocar a paginação do meu banco em $ pag [2] na minha página: ../admin/classes/Lista.php tem o seguinte código de paginação:

      <? php
          
          include_once ("../ admin / classes / ClassConexao.php");
          
          
          // verifique a página atual se informado no URL, caso contrário, ela será atribuída como 1ª página
          $ pagina = (isset ($ _ GET ['link = 2']))? $ _GET ['link = 2']: 1;
       
          // seleciona todos os itens da tabela
          $ cmd = "selecione * da categoria";
          $ produtos = mysqli_query ($ conn, $ cmd);
          
          // conta o total de itens
          $ total = mysqli_num_rows ($ produtos);
       
          // seta o número de itens por página, neste caso, 2 itens
          $ registros = 2;
       
          // calcula o número de páginas arredondando o resultado
          $ numPaginas = teto ($ total / $ registros);
       
          // variável para calcular o início da visualização com base na página atual
          $ inicio = ($ registros * $ pagina) - $ registros;
       
          // seleciona itens por página
          $ cmd = "selecione * da categoria limite $ inicio, $ registros";
          $ produtos = mysqli_query ($ conn, $ cmd);
          $ total = mysqli_num_rows ($ produtos);
           
          // exibe produtos selecionados
          while ($ produto = mysqli_fetch_array ($ produtos)) {
              echo $ produto ['id_categoria']. "-";
              echo $ produto ['categoria']. "-";
              echo $ produto ['ativo_categoria']. "<br />";
          }

      // Não sei como consertar esta parte para mostrar a paginação nesse $ pag [2] = "../admin/classes/Lista.php";
           
          // exibe paginação
          para ($ i = 1; $ i <$ numPaginas + 1; $ i ++) {
              
             echo "<a href='?pagina=$i'>". $ i. "</a>";
          }
                  
      ?>
      Meu menu fica assim:

      <div id = "sessao"> Categoria </div>
         <ul>
             
            
             <li> <a href="index.php?link=3"> Cadastro </a> </li>
             <li> <a href="index.php?link=2"> Listar / Editar </a> </li>
         
        </ul>
    • By violin101
      Caros amigos
       
      saudações...
       
      Gostaria de tirar uma dúvida com os amigos, referente uma função em Codeigniter.
       
      Fiz algumas pesquisa, mas não entendi muito bem.
       
      No Codeigniter existe base_url() e site_url(), qual é a diferença entre essas funções ou são a mesma coisa ?
       
      Grato,
       
      Cesar
    • By Kemily
      Estou com dificuldade com este programa.
      Ele da erro e não sei o que posso fazer para ele mostrar na tela o exemplo da venda de carros.
      Neste programa eu preciso conseguir dar opções de carros e formas de pagamento ao usuário para depois armazenar a escolha e assim criar uma tabela com o id do usuário, escolha de carro, quanto será a entrada e quantas parcelas de pagamento.
      Faltam algumas coisas ainda mas eu não sei como inseri-las.
      <?php if ($_POST) { $saldo = $_POST['total'] - $_POST['entrada']; <tr> <td>carro</td> <td>$_post['carro']</td> </tr> <tr> <td>total</td> <td>$_post['carro']</td> </tr> <tr> <td>estrada</td>, <td>$_post['entrada']</td> </tr> <tr> <td>parcelas</td> <td>$_post['parcelas']</td> </tr> <tr> <td>saldo</td> <td>$_POST['total'] - $_POST['entrada']</td> </tr> } ?> <html> <body> <form name='Carros' action='' method='post'> <label for="carros">Qual carro deseja comprar?</label> <br> <br> <select name="carros"> <option value="bmw">BMW M3 Sedã</option> <option value="chevrolet">Chevrolet Volt</option> <option value="dodge">Chrysler/Dodge Journey</option> <option value="citroen">Citroen C4 Lounge</option> <option value="ford">Ford Ka</option> </select> <label for="entrada">$ Entrada</label> <input type="dinheiro" value="0" name="entrada"><br> <label for="parcelas">Quantas parcelas?</label> <select name="parcelas"> <option value="12">12</option> <option value="24">24</option> <option value="36">36</option> <option value="48">48</option> </select><br><br> <label for="total">$ Total</label> <input type="dinheiro" value="0" name="total"><br> <input type="submit" value="Enviar"> </form> </body> </html>  
    • By Kemily
      <? php /* 1 - Faça uma função que recebe 3 numeros e faça a média aritmética desses números e retorne o resultado. */ if (isset ($_POST['enviar'])); $valor1 = $_POST['valor1']; $valor2 = $_POST['valor2']; $valor3 = $_POST['valor3']; $media = ($valor1 + $valor2 + $valor3) / 3; endif; ?> <!DOCTYPE html> <html> <head> <meta charset = "Utf-8"> <title> Cálculo da média aritimética</title> </head> <body> <form method="post" action=""> <br> <label>Primeiro valor: </label> <input name="valor1" type="text"> <br> <label>Segundo valor: </label> <input name="valor2" type="text"> <br> <label> Terceiro valor: </label> <input name="valor3" type="text"> <br> <br> <button type="submit" name="enviar"> Calcular Média </button> <button type="reset"> Limpar </button> <br> <br> Valor da Média <? php echo "A média equivale a:<br>" . $media . " - "; ?> </form> </body> </html> Alguém pode me ajudar?
      Eu estou fazendo este programa para calcular a média aritmética de três número que serão digitados pelo usuário.
      Porém não estou conseguindo fazer o resultado ser apresentado na tela.
      Nem o ultimo "echo" aparece só o " " . $media . " - "; " literalmente é isso que aparece onde deveria mostrar o resultado.
      Sou iniciante na área de php e se puderem ajudar agradeço. 
×

Important Information

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