Ir para conteúdo

POWERED BY:

Arquivado

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

juninhogpe

Upload de imagens

Recommended Posts

Bom dia.

 

Pessoal tenho uma galeria de fotos à qual envio todas de uma vez em um formulário e tenho uma página que recebe esses dados, cria a pasta e realiza o upload com redimensionamento das imagens. O problema é que só faz upload de 20 imagens, se eu colocar mais que isso não aparece.

 

Localmente consigo realizar o upload de mais de 20 imagens. Abaixo os códigos:

 

fotos.php

<form name="clero" method="post" action="img-action.php" enctype="multipart/form-data"> 
  <div class="form-group"> 
    <label for="exampleInputEmail1">Nome</label> 
    <input type="text" name="nome_galeria" class="form-control" id="exampleInputEmail1" placeholder="Nome"> 
  </div> 

  <div class="form-group"> 
    <label for="exampleInputPassword1">Data</label> 
    <input type="date" name="data" class="form-control" id="exampleInputPassword1" placeholder="Data">
  </div>

  <div class="form-group"> 
    <label for="exampleInputEmail1">Autor</label> 
    <input type="text" name="autor" class="form-control" id="exampleInputEmail1" placeholder="Nome"> 
  </div> 



  <div class="clearfix"></div>


  <div class="form-group"> 
    <label for="exampleInputFile">Fotos</label>
    <input type="file" name="file[]" id="exampleInputFile" required multiple>	
  </div> 


  <button type="submit" class="btn btn-default">Cadastrar</button> 
</form> 

 

img-action.php

<?php
	
	session_start();
	if (!$_SESSION["usuarioNome"]) header("Location: index.php");
	include("conexao.php");		

	ini_set('post_max_size', '500M');
	ini_set('upload_max_filesize', '500M');



function clean($string) {
	$a = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕºª";
	$b = "aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRroa";
	$string = utf8_decode($string);
	$string = strtr($string, utf8_decode($a), $b); //substitui letras acentuadas por "normais"
	$string = str_replace(" ","-",$string); // retira espaco
	$string = strtolower($string); // passa tudo para minusculo
	return utf8_encode($string); //finaliza, gerando uma saída para a funcao
}


function resizeImage($Largura_atual,$Altura_atual,$Tamanho_Maximo,$Pasta_Destino,$SrcImage,$Qualidade_img,$Tipo_imagem){
	//Verifica se a imagem existe
	if($Largura_atual <= 0 || $Altura_atual <= 0) 
		return false;
			
	//Construção proporcional da nova imagem
	$Imagem       = min($Tamanho_Maximo/$Largura_atual, $Tamanho_Maximo/$Altura_atual); 
	$Nova_Largura = ceil($Imagem*$Largura_atual);
	$Nova_Altura  = ceil($Imagem*$Altura_atual);
	
	if($Largura_atual < $Nova_Largura || $Altura_atual < $Nova_Altura){	
		$Nova_Largura = $Largura_atual;
		$Nova_Altura = $Altura_atual;
	}
	
	$NewCanves 	= imagecreatetruecolor($Nova_Largura, $Nova_Altura);

	// Redimensionamento de imagem
	if(imagecopyresampled($NewCanves, $SrcImage,0, 0, 0, 0, $Nova_Largura, $Nova_Altura, $Largura_atual, $Altura_atual)){	
		switch(strtolower($Tipo_imagem)){	
			case 'image/png':
						imagepng($NewCanves,$Pasta_Destino);
						break;
					case 'image/gif':
						imagegif($NewCanves,$Pasta_Destino);
						break;			
					case 'image/jpeg':
					case 'image/pjpeg':
						imagejpeg($NewCanves,$Pasta_Destino,$Qualidade_img);
						break;
					default:
						return false;
		}
			if(is_resource($NewCanves)) 
				imagedestroy($NewCanves); 
				 
			return true;
	}
}

$nome_galeria = $_POST["nome_galeria"]; 
$nome_pasta   = clean($nome_galeria);

$destino_imagem = mkdir('fgaleria/'.$nome_pasta.'/',0777,true);

// Inserção na tabela de galeria
$nome_galeria  = $_POST["nome_galeria"];
$autor         = $_POST["autor"];
$data          = date("Y-m-d", strtotime($_POST['data']));

	
if(isset($_FILES['file']['name'])){


			//Configurações da Imagem
			$Tamanho_Max_Imagem 		= 640; //Largura e altura máxima da imagem
			$Prefixo_Img_redimensionada	= "imagem_comprimida"; //Prefixo para o nome da imagem salva
			$Pasta_Img_Original			= 'original/';
			$Pasta_Img_Comprimida		= 'fgaleria/'; //Diretório para onde a imagem comprimida será salva
			$Qualidade_img 				= 100;
			$Local_Img_comprimida[] 	= $destino_imagem;
			$Local_Img_original[]		= "";

		

			if ($nome_galeria != ""){
								
				$sql = utf8_decode("INSERT INTO galeria (nome, data, autor, nome_pasta) 
								VALUES ('$nome_galeria', '$data','$autor', '$nome_pasta')");
				
				if($conn->query($sql) === TRUE){
					echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>");
					echo utf8_encode('<script>window.location="fotos.php";</script>');
				}
				else{
					echo "Erro: " . $sql . "<br />" .$conn->error;
					echo utf8_encode('<script>window.location="fotos.php";</script>');
				}
			}
			


			$cont = $_FILES['file']['tmp_name'];

			 for($i = 0; $i < count($cont); $i++){

				// Algumas informações das imagens que serão necessárias.
				$Nome_Imagem=$_FILES['file']["name"][$i];
				$Tamanho_Imagem=$_FILES['file']['size'][$i];
				$TempSrc=$_FILES['file']['tmp_name'][$i];
				$Tipo_imagem=$_FILES['file']['type'][$i];

				$Process_Imagem = true;
			
			
			//Validação de arquivo e criação da imagem a partir da imagem que foi feito upload.
					switch(strtolower($Tipo_imagem)){
						case 'image/png':
								$Imagem_Criada = imagecreatefrompng($TempSrc);
								break;
							case 'image/gif':
								$Imagem_Criada = imagecreatefromgif($TempSrc);
								break;
							case 'image/jpeg':
							case 'image/pjpeg':
								$Imagem_Criada = imagecreatefromjpeg($TempSrc);
								break;
							default:
								$Process_Imagem = false; //Formato do arquivo não suportado! 
					}
							


					//Pega o tamanho da imagem
					list($Largura_atual,$Altura_atual) = getimagesize($TempSrc);

					//Local para as imagens de destino
					$DestRandNome_Imagem 			= 'fgaleria/'.$nome_pasta.'/'.$Nome_Imagem; //Name for Big Image
					date_default_timezone_set('America/Sao_Paulo'); 
					$data_upload = date('Y-m-d H:i:s');
  

					//Redimensionamento da imagem para o tamanho especificado na função resizeImage.
					if($Process_Imagem && resizeImage($Largura_atual,$Altura_atual,$Tamanho_Max_Imagem,$DestRandNome_Imagem,$Imagem_Criada,$Qualidade_img,$Tipo_imagem)){	
					
							//Novo tamanho para imagem
							list($ResizedWidth,$ResizedHeight)=getimagesize($DestRandNome_Imagem);
							$Local_Img_comprimida	= $DestRandNome_Imagem;
							echo $Local_Img_comprimida;
							//$Local_Img_original	= $OriginalNome_Imagem;						
					}

					else{
						echo '<p style="color:red;">Ocorreu um erro ao processar.<strong>'.$Nome_Imagem.'</strong></div>'; //output error
					}

		}
	
}

	echo '<script language="javascript">alert("Imagens enviadas com sucesso!")</script>';

	
?>

 

Já alterei também no "php.ini" os limites para:

upload_max_filesize = 500M
post_max_size = 500M

 

Mesmo assim não funciona.

 

O que acham que pode ser?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, juninhogpe disse:

O problema é que só faz upload de 20 imagens

 

Precisava nem postar todos esses códigos ai, geralmente hospedagens terceirizadas limitam o numero máximo de uploads, o limite está no php.ini na seguinte linha

max_file_uploads=20

Você deve enviar uma a cada vez e colocar as outras em fila

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 ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

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