Ir para conteúdo

POWERED BY:

Arquivado

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

Mateus_Jp

Problema com Upload de Arquivos

Recommended Posts

Boa Tarde Senhores,

 

Estou iniciando meus estudos em PHP e já consegui fazer várias coisas hehe...

 

Meu sistema de Upload de Arquivos está funcionando tudo OK, copiando a imagem do PC para a pasta img dentro do www.

Porém essa mensagem de erro está me incomodando e não sei como solucionar, já vi algumas sugestões na internet mas nada resolveu ainda.

Não queria meu sistema funcionando mas com uma mensagem de erro.

 

Warning: copy(): Filename cannot be empty in C:\AppServ\www\login\pags\cadastro.php on line 48

 

Meu código (cadastro.php):

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>   
<script>
    $(document).ready(function(){
    $('#showPassword').on('click', function(){
    
    var passwordField = $('#password');
    var passwordFieldType = passwordField.attr('type');
    if(passwordFieldType == 'password')
    {
        passwordField.attr('type', 'text');
        $(this).val('Ocultar');
    } else {
        passwordField.attr('type', 'password');
        $(this).val('Mostrar');
    }
  });
});
</script>
</head>

<body>

<h4>Cadastre-se</h4>
<hr>

<link href='https://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet' type='text/css'>
<div class="container">
  <form action="" id="loginForm" method="POST" enctype="multipart/form-data">
    <p><label for="nome">Nome *</label><br><input type="text" name="nome" placeholder="Nome Completo" class="form-control"/></p><br>
    <p><label for="usuario">Usuário *</label><br><input type="text" name="usuario" placeholder="Nome do Usuário" class="form-control"/></p><br>
    <p><label for="password">Senha *</label><br><input type="password" name="senha" id="password" placeholder="Senha" /> <img id="showPassword" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVQ4jd2SvW3DMBBGbwQVKlyo4BGC4FKFS4+TATKCNxAggkeoSpHSRQbwAB7AA7hQoUKFLH6E2qQQHfgHdpo0yQHX8T3exyPR/ytlQ8kOhgV7FvSx9+xglA3lM3DBgh0LPn/onbJhcQ0bv2SHlgVgQa/suFHVkCg7bm5gzB2OyvjlDFdDcoa19etZMN8Qp7oUDPEM2KFV1ZAQO2zPMBERO7Ra4JQNpRa4K4FDS0R0IdneCbQLb4/zh/c7QdH4NL40tPXrovFpjHQr6PJ6yr5hQV80PiUiIm1OKxZ0LICS8TWvpyyOf2DBQQtcXk8Zi3+JcKfNafVsjZ0WfGgJlZZQxZjdwzX+ykf6u/UF0Fwo5Apfcq8AAAAASUVORK5CYII="
/><br><br>
    <p><label for="email">E-Mail *</label><br><input type="email" name="email" placeholder="Endereço de E-Mail" class="form-control"/></p><br>
    <p><label for="avatar">Avatar</label><br><input type="file" name="avatar" id="avatar"><br><br><input type="reset" value="Apagar"><br><br><br><br>
    <input type="submit" value="Cadastrar" class="btn btn-primary btn-lg btn-block">
    <input type="hidden" name="cadastrar" value="register">
  </form>
</div>
    
</body>
</html>



<?php 
    $nome_temporario=$_FILES["avatar"]["tmp_name"];
    $nome_real=$_FILES["avatar"]["name"];
    copy($nome_temporario,"img/$nome_real");
    cadastro($con);
?>

Esse cadastro($con) é uma function que efetua o cadastro e está em outro php, mas creio que ele não será necessário.

O erro está informando que é esta linha: copy($nome_temporario,"img/$nome_real");

 

Alguém teria alguma luz pra me ajudar???

 

Grato, Mateus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, não entendi muito bem mas vamos lá

 

9 minutos atrás, Mateus_Jp disse:

<input type="submit" value="Cadastrar" class="btn btn-primary btn-lg btn-block">

troque por:

<input type="submit" value="Cadastrar" name="confirmar" class="btn btn-primary btn-lg btn-block">

troque isso

9 minutos atrás, Mateus_Jp disse:

<?php 
    $nome_temporario=$_FILES["avatar"]["tmp_name"];
    $nome_real=$_FILES["avatar"]["name"];
    copy($nome_temporario,"img/$nome_real");
    cadastro($con);
?>

por


<?php 
if (isset($_POST['confirmar'])){
    $nome_temporario=$_FILES["avatar"]["tmp_name"];
    $nome_real=$_FILES["avatar"]["name"];
    copy($nome_temporario,"img/$nome_real");
    cadastro($con);
}
?>

acho que isso resolve 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ver se ajuda... Ha muito tempo criei essa classe de upload tenta ela para ver.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 horas atrás, igu disse:

Olá, não entendi muito bem mas vamos lá

 

troque por:


<input type="submit" value="Cadastrar" name="confirmar" class="btn btn-primary btn-lg btn-block">

troque isso

por



<?php 
if (isset($_POST['confirmar'])){
    $nome_temporario=$_FILES["avatar"]["tmp_name"];
    $nome_real=$_FILES["avatar"]["name"];
    copy($nome_temporario,"img/$nome_real");
    cadastro($con);
}
?>

acho que isso resolve 

 

Meu amigo, muito obrigado, resolveu sim 100%!

 

Sem erros e funcionando 100%.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Mateus

 

Tenta assim:

    <?php

    //Função que define o tamanho dos arquivos
    include "tamanhoArquivo.php";

      if( isset($_POST['executar']) && $_POST['executar'] == 'Adicionar' ){

        $clientes_clienteId = "$userClientes_clienteId";   

        $nomeDoclie   = strip_tags(trim($_POST['nomeDoclie']));             
        $validaDoclie = strip_tags(trim($_POST['validaDoclie'])); 
     
        // arquivo
        $arquivo = $_FILES['arquivo'];
     
        // Tamanho máximo do arquivo (em Bytes) = 2Mb
        $tamanhoPermitido = 1024 * 1024 * 2; 
     
        //Define o diretorio para onde enviaremos o arquivo
        $diretorio = "admin-cliente/docClie/";
     
        // verifica se arquivo foi enviado e sem erros
        if( $arquivo['error'] == UPLOAD_ERR_OK ){
     
            // pego a extensão do arquivo
            $extensao = extensao($arquivo['name']);
     
            // valida a extensão
            if( in_array( $extensao, array('pdf') ) ){
     
                // verifica tamanho do arquivo
                if ( $arquivo['size'] > $tamanhoPermitido ){
                  echo '<div class="alert alert-warning alert-dismissible">
                        <h4>"O arquivo enviado é muito grande, envie arquivos de até '.$tamanhoPermitido/MB.' MB."</h4>
                        </div>';

                  //Redirecionando para Caixa de Enrada do Cliente
                  echo '<meta http-equiv="refresh" content="3, URL=painel.php?exe=admin-cliente/clientes/clientes" />';
     
                }else{
     
                    // atribui novo nome ao arquivo
                    $novo_nome = 'cliente['.$clientes_clienteId.']-'.md5(time()).".".$extensao;
     
                    // faz o upload
                    $executar = move_uploaded_file($_FILES['arquivo']['tmp_name'], $diretorio.$novo_nome);
     
                    if($executar){
              
                      $sql_documento = 'INSERT INTO docCliente (nomeDoclie, pastaDoclie, validaDoclie, clientes_clienteId) ';
                      $sql_documento .= 'VALUES (:nomeDoclie, :novo_nome, :validaDoclie, :clientes_clienteId)';

                      try{
                        $query_documento = $conecta->prepare($sql_documento);
                        $query_documento->bindValue(':nomeDoclie',$nomeDoclie,PDO::PARAM_STR);
                        $query_documento->bindValue(':novo_nome',$novo_nome,PDO::PARAM_STR); 
                        $query_documento->bindValue(':validaDoclie',$validaDoclie,PDO::PARAM_STR);   
                        $query_documento->bindValue(':clientes_clienteId',$clientes_clienteId,PDO::PARAM_STR);     
                        $query_documento->execute();
                        
                         echo '<div class="alert alert-success alert-dismissible">        
                              <h4>Documento Cadastrado com Sucesso!</h4>        
                             </div>';                 

                        //Redirecionando para Caixa de Enrada do Cliente
                        echo '<meta http-equiv="refresh" content="3, URL=painel.php?exe=admin-cliente/clientes/clientes" />';

                         } catch(PDOexception $error_novoDocumento) {
                    
                        echo '<div class="alert alert-warning alert-dismissible">
                              <h4>Erro o Documento.</h4>
                              </div>'; 

                        }           

                    }else{

                      echo '<div class="alert alert-warning alert-dismissible">
                            <h4>Erro ao enviar o Documento.</h4>
                            </div>'; 
                      
                      //Redirecionando para Caixa de Enrada do Cliente
                      echo '<meta http-equiv="refresh" content="3, URL=painel.php?exe=admin-cliente/clientes/clientes" />';                                         
                    }
                }
     
            }else{

              echo '<div class="alert alert-danger alert-dismissible">
                     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                     <h4><i class="fa fa-warning"></i> Atenção!</h4>
                     Somente arquivo com a extensão: <strong>.PDF</strong> é permitido.
                    </div>';


            }
     
        }else{

          echo '<div class="alert alert-info alert-dismissible">
                  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                  <h4><i class="icon fa fa-info"></i> Atenção!</h4>
                  Por favor selecione um arquivo .PDF para ser enviado.
                </div>';
        }
      }

    ?>
 <?php
    //tamanhoArquivo.php
	function extensao($arquivo){

		$arquivo = strtolower($arquivo);
		$explode = explode(".", $arquivo);
		$arquivo = end($explode);

	 return ($arquivo);
	 
	}
	 
	define('KB', 1024); // 1024
	define('MB', 1048576); // 1024 * 1024
	define('GB', 1073741824); // 1024 * 1024 * 1024
	define('TB', 1099511627776); // 1024 * 1024 * 1024 * 1024
	
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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