Ir para conteúdo

POWERED BY:

Arquivado

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

Jeovane Carvalho

Mult-upload de arquivos

Recommended Posts

Olá amigos mais uma vez aqui no fórum , e busco uma solução para o meu problema, tenho um formulário e que envia somente 1 arquivo para o banco de dados e para uma pasta no servidor junto com uma marca d'água usando WideImage, e com input dinâmico usando ajax, só que estou tentando adaptar este código para o envio de vários arquivos, e estou tentando usar um for pra contar o número de arquivos. só que mesmo assim só chegar 1 arquivo na pasta e no banco, como proceder neste caso para mult-uploads, segue abaixo o código.

<?php 
include("../config.php"); 

$id = strip_tags( $_GET['id'] );
$idF = strip_tags( $_GET['idF'] );
$acao = strip_tags( $_GET['acao'] );
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="refresh" content="2000;url=http://www.jcimoveisbrasil.com/adm/sair.php">
<title>Sistema de Administração de Imóves -  Imobili San</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css.css" rel="stylesheet" type="text/css" />
<link href="barrafixa.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js" charset="UTF-8"></script>



<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
<script type="text/javascript"> 
$(document).ready(function() { 
//elements
var progressbox 		= $('#progressbox'); //progress bar wrapper
var progressbar 		= $('#progressbar'); //progress bar element
var statustxt 			= $('#statustxt'); //status text element
var submitbutton 		= $("#SubmitButton"); //submit button
var myform 				= $("#UploadForm"); //upload form
var output 				= $("#output"); //ajax result output element
var completed 			= '0%'; //initial progressbar value
var FileInputsHolder 	= $('#AddFileInputBox'); //Element where additional file inputs are appended
var MaxFileInputs		= 40; //Maximum number of file input boxs

// adding and removing file input box
var i = $("#AddFileInputBox div").size() + 1;
$("#AddMoreFileBox").click(function(event)
 {
		event.returnValue = false;
		if(i < MaxFileInputs)
		{
			$('<span><input type="file" id="fileInputBox" size="20" name="foto" class="addedInput" value=""/><a href="#" class="removeclass small2"><img src="images/close_icon.gif" border="0" /></a></span>').appendTo(FileInputsHolder);
			i++;
		}
		return false;
});

$("body").on("click",".removeclass", function(event){
		event.returnValue = false;
		if( i > 1 ) {
				$(this).parents('span').remove();i--;
		}
		
}); 

$("#ShowForm").click(function () {
  $("#uploaderform").slideToggle(); //Slide Toggle upload form on click
});
	
$(myform).ajaxForm({
	beforeSend: function() { //brfore sending form
		submitbutton.attr('disabled', ''); // disable upload button
		statustxt.empty();
		progressbox.show(); //show progressbar
		progressbar.width(completed); //initial value 0% of progressbar
		statustxt.html(completed); //set status text
		statustxt.css('color','#000'); //initial color of status text
		
	},
	uploadProgress: function(event, position, total, percentComplete) { //on progress
		progressbar.width(percentComplete + '%') //update progressbar percent complete
		statustxt.html(percentComplete + '%'); //update status text
		if(percentComplete>50)
			{
				statustxt.css('color','#fff'); //change status text to white after 50%
			}else{
				statustxt.css('color','#000');
			}
			
		},
	complete: function(response) { // on complete
		output.html(response.responseText); //update element with received data
		myform.resetForm();  // reset form
		submitbutton.removeAttr('disabled'); //enable submit button
		progressbox.hide(); // hide progressbar
		$("#uploaderform").slideUp(); // hide form after upload
	}
});

}); 
</script> 







</head>
<body>
<div id="container">
<div align="center">
<table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" class="borda"><!--DWLayoutTable-->
<tr>
<td height="51" colspan="2" valign="top" class="borda2"><img src="imagens/img-topo-adm.jpg"></td>
</tr>
<tr>
<td width="255" rowspan="5" valign="top" class="borda_menu">
      
<?php include_once('menu.php'); ?> <br /><br />
      
 </td>
<td width="612" rowspan="5" valign="top" class="borda_menu">
<table width="388" border="0" align="center" cellpadding="0" cellspacing="0">
<tr> 
<td width="115" height="13"></td>
<td width="28"></td>
<td width="115"></td>
<td width="15"></td>
<td width="115"></td>
</tr>
<tr> 
<td height="13" valign="top"><a href="imoveis_fotos.php?acao=&id=<?php echo $id; ?>"  class="but but-primary but-shadow but-rc"><font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif"><strong>    PRINCIPAL   </strong></font>
</a> 
</td>
<td>
</td>
<td valign="top"><a href="imoveis_fotos.php?acao=extra&id=<?php echo $id; ?>" class="but but-error but-shadow but-rc"> 
<font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif"><strong>    EXCLUIR   </strong></font>
</a></td>
<td></td>
<td valign="top"><a href="album_add.php?id=<?php echo $id; ?>" class="but but-success but-shadow but-rc"><font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif"><strong>    ADICIONAR   </strong></font></a></td>
</tr>
<tr> 
<td height="34"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<?php

if($acao ==''){
echo '
<div id="uploaderform">
<form action="album_add.php?acao=add&id='.$id.'" method="post" enctype="multipart/form-data" name="form1">
<p align="center">Imagem<br>
<label>Files
    <span class="small"><a href="#" id="AddMoreFileBox">Add mais Arquivos</a></span>
    </label>
 <div id="AddFileInputBox">
 <input id="fileInputBox" style="margin-bottom: 5px;" type="file"  name="foto"/></div>
    <div class="sep_s"></div>
	</p>
<p align="center">Pequena descrição<br>
<input name="desc_" type="text" size="60" maxlength="250">
</p>
<p align="center"> 
<input type="submit" name="Submit" value="Enviar Foto"></p>
</form></div>';

}// FECHA principal

?>

<?php
if($acao =='add'){
	
$erro = $config = array();
// Prepara a variável do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 2010680;
// Largura máxima (pixels)
$config["largura"] = 2024;
// Altura máxima (pixels)
$config["altura"]  = 1768;
// Formulário postado... executa as ações



if($arquivo){
	

// Verifica se o mime-type do arquivo é de imagem
if(!preg_match("/^image\/(pjpeg|jpeg|jpg|png|gif|swf)$/i", $arquivo["type"])){

$erro[] = "Arquivo em formato inválido! Arquivos devem ser do tipo: jpg, png jpeg ou gif.";
echo "<script language='JavaScript'>

alert('Arquivo em formato inválido! Formato aceito: JPG, JPEG, SWF,JPG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}else{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande! 
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
echo "<script language='JavaScript'>
alert('A imagem deve ser de no máximo ". $config["tamanho"] ." bytes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem não pose ser 
maior que " . $config["largura"] . " pixels";
echo "<script language='JavaScript'>
alert('A largura da imagem nao pode ser maior que ". $config["tamanho"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem não pode ser
maior que " . $config["altura"] . " pixels";
echo "<script language='JavaScript'>
alert('A altura da imagem nao pode maior que ". $config["altura"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";

}
}
// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem ficará
$imagem_dir = "../img_imoveis/album/" . $imagem_nome;

extract( $_POST, EXTR_OVERWRITE);
$sql = $MySQLi->query("INSERT INTO fotos (id_imovel, foto, obs_foto) VALUES ('$id', '$imagem_nome', '$desc_')") or print(mysqli_error());

if($sql ==1){
// Faz o upload da imagem
echo $arquivo["name_tempo"];
// se a imagem for maior que 500 redimensiona, se não for, apenas faz o upload

// 0 largura, 1 altura//
//Fazendo o redimensionamento de largura e altura e incluindo a marca d'água//
if( $tamanhos[0] >200 || $tamanhos[1] > 100 ){

//ADAPTEI ESTA PARTE USANDO UM FOR PARA CONTAR E ENVIAR OS ARQUIVOS//

 if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$foto= $_FILES['foto'];

for($i = 0, $c = count($foto); 
$i <= $c; ++ $i) {
$upload =move_uploaded_file($foto["tmp_name"], $imagem_dir.$foto[$i]);

}

//FIM DO FOR//

echo "<br /><br /><div align='center'><b>Foto adicionada com sucesso</b><br><br /><a href=album_add.php?id=$id><span class='but but-primary but-shadow but-rc'><font color='#ffffff' size='2' face='Arial, Helvetica, sans-serif'>  clique aqui para voltar</font>  </span></a>
</div>";
}else{
echo "<br /><br />ERRO AO TENTAR ADICIONAR FOTO<br><br><a href=album_add.php?id=$id>clique aqui para voltar e tente novamente</a>";
}
}
}
}
}
}
// fecha a ação add
?>
</p>
</td>
<td width="133" height="23" colspan="3" valign="top" class="borda3"></td>
</tr>
<tr>
<td height="18" valign="top" bgcolor="#f2f2f2">
</td>
</tr>
</table>
<div  align="center">

</div>
</div>
</div>
</body>
</html>


Bem contudo mesmo adaptando o for ele só envia 1 arquivo com a marca d'água e gostaria que enviasse diversos arquivos de uma só vez se possível, desde já agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou explicar de forma conceitual.

 

você vai ter que passar como um vetor arquivo, isso é, em vês de usar name="foto" vai ter que usar da seguinte maneira name="foto[]"; Assim você pode colocar quantos quiser para envio a diferença vai ser na hora de receber esses arquivos, pois lá você vai ter que fazer um foreach para extrair os vetores e logo em seguida já fazer o que está fazendo abaixo,

Abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente desde já agradeço à todos por responder tão rápido ExtremsX, Thiago-Bulfaitelo, Web Developer (PHP), eu fiz dessa maneira como indicou name="foto[]" só que o arquivo não chega na pasta, e como você disse vou tentar incluir o foreach para ver se resolve, mas vou dar uma olhada tbm no exemplo do Web developer para ver se consigo solucionar meu script para enviar vários arquivos, caso não consiga vou aqui para tirarem mais dúvidas e se eu conseguir vou deixar a solução para ajudar outras pessoas, aguardem...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente desde já agradeço à todos por responder tão rápido ExtremsX, Thiago-Bulfaitelo, Web Developer (PHP), eu fiz dessa maneira como indicou name="foto[]" só que o arquivo não chega na pasta, e como você disse vou tentar incluir o foreach para ver se resolve, mas vou dar uma olhada tbm no exemplo do Web developer para ver se consigo solucionar meu script para enviar vários arquivos, caso não consiga vou aqui para tirarem mais dúvidas e se eu conseguir vou deixar a solução para ajudar outras pessoas, aguardem...

 

Ótima ideia, mais de qualquer forma você vai ter que fazer um foreach, porque

 

Por exemplo:

 

antes você fazia assim par apegar os dados

$_FILE['foto'][ aqui seria o vetor tmp_name, size, etc...];

 

Agora você vai ter que trabalhar da seguinte maneira:

$_FILE['foto'][ aqui seria o vetor tmp_name, size, etc...][Aqui agora entra a posição do vetor 0,1,2....];

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá pessoal, eu acabei postando o código errado acima, na verdade é este código que envia corretamente 1 arquivo com a marca d´agua, ele funciona normalmente a diferença é que uso a função SaveToFile da classe WideImage.

<?php
include("../config.php");


$id = strip_tags( $_GET['id'] );
$idF = strip_tags( $_GET['idF'] );
$acao = strip_tags( $_GET['acao'] );
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="refresh" content="2000;url=http://www.jcimoveisbrasil.com/adm/sair.php">
<title>Sistema de Administração de Imóves -  Imobili San</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css.css" rel="stylesheet" type="text/css" />
<link href="barrafixa.css" rel="stylesheet" type="text/css" />


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js" charset="UTF-8"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//elements
var progressbox         = $('#progressbox'); //progress bar wrapper
var progressbar         = $('#progressbar'); //progress bar element
var statustxt             = $('#statustxt'); //status text element
var submitbutton         = $("#SubmitButton"); //submit button
var myform                 = $("#UploadForm"); //upload form
var output                 = $("#output"); //ajax result output element
var completed             = '0%'; //initial progressbar value
var FileInputsHolder     = $('#AddFileInputBox'); //Element where additional file inputs are appended
var MaxFileInputs        = 40; //Maximum number of file input boxs

// adding and removing file input box
var i = $("#AddFileInputBox div").size() + 1;
$("#AddMoreFileBox").click(function(event)
 {
        event.returnValue = false;
        if(i < MaxFileInputs)
        {
            $('<span><input type="file" id="fileInputBox" size="20" name="foto[]" class="addedInput" value=""/><a href="#" class="removeclass small2"><img src="images/close_icon.gif" border="0" /></a></span>').appendTo(FileInputsHolder);
            i++;
        }
        return false;
});

$("body").on("click",".removeclass", function(event){
        event.returnValue = false;
        if( i > 1 ) {
                $(this).parents('span').remove();i--;
        }
        
});

$("#ShowForm").click(function () {
  $("#uploaderform").slideToggle(); //Slide Toggle upload form on click
});
    
$(myform).ajaxForm({
    beforeSend: function() { //brfore sending form
        submitbutton.attr('disabled', ''); // disable upload button
        statustxt.empty();
        progressbox.show(); //show progressbar
        progressbar.width(completed); //initial value 0% of progressbar
        statustxt.html(completed); //set status text
        statustxt.css('color','#000'); //initial color of status text
        
    },
    uploadProgress: function(event, position, total, percentComplete) { //on progress
        progressbar.width(percentComplete + '%') //update progressbar percent complete
        statustxt.html(percentComplete + '%'); //update status text
        if(percentComplete>50)
            {
                statustxt.css('color','#fff'); //change status text to white after 50%
            }else{
                statustxt.css('color','#000');
            }
            
        },
    complete: function(response) { // on complete
        output.html(response.responseText); //update element with received data
        myform.resetForm();  // reset form
        submitbutton.removeAttr('disabled'); //enable submit button
        progressbox.hide(); // hide progressbar
        $("#uploaderform").slideUp(); // hide form after upload
    }
});

});
</script>



</head>
<body>
<div id="container">
<div align="center">
<table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" class="borda"><!--DWLayoutTable-->
<tr>
<td height="51" colspan="2" valign="top" class="borda2"><img src="imagens/img-topo-adm.jpg"></td>
</tr>
<tr>
<td width="255" rowspan="5" valign="top" class="borda_menu">
      
<?php include_once('menu.php'); ?> <br /><br />
      
 </td>
<td width="612" rowspan="5" valign="top" class="borda_menu">
<table width="388" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="115" height="13"></td>
<td width="28"></td>
<td width="115"></td>
<td width="15"></td>
<td width="115"></td>
</tr>
<tr>
<td height="13" valign="top"><a href="imoveis_fotos.php?acao=&id=<?php echo $id; ?>"  class="but but-primary but-shadow but-rc"><font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif"><strong>    PRINCIPAL   </strong></font>
</a>
</td>
<td>
</td>
<td valign="top"><a href="imoveis_fotos.php?acao=extra&id=<?php echo $id; ?>" class="but but-error but-shadow but-rc">
<font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif"><strong>    EXCLUIR   </strong></font>
</a></td>
<td></td>
<td valign="top"><a href="album_add.php?id=<?php echo $id; ?>" class="but but-success but-shadow but-rc"><font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif"><strong>    ADICIONAR   </strong></font></a></td>
</tr>
<tr>
<td height="34"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<?php

if($acao ==''){
echo '<div id="uploaderform">
<form action="album_add.php?acao=add&id='.$id.'" method="post" enctype="multipart/form-data" name="form1">
<p align="center">Imagem<br>
<label>Files
    <span class="small"><a href="#" id="AddMoreFileBox">Add mais Arquivos</a></span>
    </label>
 <div id="AddFileInputBox">
 <input id="fileInputBox" style="margin-bottom: 5px;" type="file"  name="foto"/></div>
    <div class="sep_s"></div>
    </p>
<p align="center">Pequena descrição<br>
<input name="desc_" type="text" size="60" maxlength="250">
</p>
<p align="center">
<input type="submit" name="Submit" value="Enviar Foto"></p>
</form></div>';

}// FECHA principal

?>

<?php
if($acao =='add'){
$erro = $config = array();
// Prepara a varivel do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
// Tamanho mximo do arquivo (em bytes)
$config["tamanho"] = 2010680;
// Largura mxima (pixels)
$config["largura"] = 2024;
// Altura mxima (pixels)
$config["altura"]  = 1768;
// Formulrio postado... executa as aes
if($arquivo)
{  
// Verifica se o mime-type do arquivo  de imagem
if(!preg_match("/^image\/(pjpeg|jpeg|jpg|png|gif|swf)$/i", $arquivo["type"])){

$erro[] = "Arquivo em formato invlido! Arquivos devem ser do tipo: jpg, png jpeg ou gif.";
echo "<script language='JavaScript'>

alert('Arquivo em formato invlido! Formato aceito: JPG, JPEG, SWF,JPG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}else{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no mximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
echo "<script language='JavaScript'>
alert('A imagem deve ser de no mximo ". $config["tamanho"] ." bytes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Para verificar as dimenses da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem no pose ser
maior que " . $config["largura"] . " pixels";
echo "<script language='JavaScript'>
alert('A largura da imagem nao pode ser maior que ". $config["tamanho"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem no pode ser
maior que " . $config["altura"] . " pixels";
echo "<script language='JavaScript'>
alert('A altura da imagem nao pode maior que ". $config["altura"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";

}
}
// Verificao de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem irá ficar
$imagem_dir = "../img_imoveis/album/" . $imagem_nome;

extract( $_POST, EXTR_OVERWRITE);
$sql = $MySQLi->query("INSERT INTO fotos (id_imovel, foto, obs_foto) VALUES ('$id', '$imagem_nome', '$desc_')") or print(mysqli_error());

if($sql ==1){
// Faz o upload da imagem
echo $arquivo["name_tempo"];
// se a imagem for maior que 500 redimensiona, se no for, apenas faz o upload

// 0 largura, 1 altura//
//Fazendo o redimensionamento de largura e altura e incluindo a marca d'água//
if( $tamanhos[0] >200 || $tamanhos[1] > 100 ){

require_once( "WideImage/WideImage.php");

$foto_temp= $_FILES['foto']['tmp_name'];
$foto= $_FILES['foto']['name'];
$foto=  WideImage::load($foto_temp);
$foto =$foto->resize(900, 540, 'fill');

$marca = WideImage::load("../images/marca1.png");

$redimensionar =$foto->merge($marca,'center','center');
$redimensionar->SaveToFile("../img_imoveis/album/". $imagem_nome);


}else{

move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
}
echo "<br /><br /><div align='center'><b>Foto adicionada com sucesso</b><br><br /><a href=album_add.php?id=$id><span class='but but-primary but-shadow but-rc'><font color='#ffffff' size='2' face='Arial, Helvetica, sans-serif'>  clique aqui para voltar</font>  </span></a>
</div>";
}else{
echo "<br /><br />ERRO AO TENTAR ADICIONAR FOTO<br><br><a href=album_add.php?id=$id>clique aqui para voltar e tente novamente</a>";
}
}
}
}
// fecha o add
?>
</p>
</td>
<td width="133" height="23" colspan="3" valign="top" class="borda3"></td>
</tr>
<tr>
<td height="18" valign="top" bgcolor="#f2f2f2">
</td>
</tr>
</table>
<div  align="center">
<?php include('rodape.php'); ?>
</div>
</div>
</div>
</body>
</html>





Bem contudo mesmo adaptando o for ele só envia 1 arquivo com a marca d'água e gostaria que enviasse diversos arquivos de uma só vez se possível, e o detalhe é que neste script eu uso a codificação do nome do arquivo em "md5" e para buscar a extensão preg_match, para diferenciar no banco de dados desde já agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você poderia arrumar isso? é que ta grande e a formatação na está ajudando em nada.

 

Sei lá, colocar o que é importante ou algo assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi ExtremS segue apenas o php :

//AQUI É O FORMULÁRIO QUE UPA OS DADOS//
<?php

if($acao ==''){
echo '<div id="uploaderform">
<form action="album_add.php?acao=add&id='.$id.'" method="post" enctype="multipart/form-data" name="form1">
<p align="center">Imagem<br>
<label>Files
    <span class="small"><a href="#" id="AddMoreFileBox">Add mais Arquivos</a></span>
    </label>
 <div id="AddFileInputBox">
 <input id="fileInputBox" style="margin-bottom: 5px;" type="file"  name="foto"/></div>
    <div class="sep_s"></div>
    </p>
<p align="center">Pequena descrição<br>
<input name="desc_" type="text" size="60" maxlength="250">
</p>
<p align="center">
<input type="submit" name="Submit" value="Enviar Foto"></p>
</form></div>';

}// FECHA principal

?>

//AQUI É O SCRIPT QUE FAZ O PROCESSAMENTO DO UPLOAD//
<?php
if($acao =='add'){
$erro = $config = array();
// Prepara a varivel do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
// Tamanho mximo do arquivo (em bytes)
$config["tamanho"] = 2010680;
// Largura mxima (pixels)
$config["largura"] = 2024;
// Altura mxima (pixels)
$config["altura"]  = 1768;
// Formulrio postado... executa as aes
if($arquivo)
{  
// Verifica se o mime-type do arquivo  de imagem
if(!preg_match("/^image\/(pjpeg|jpeg|jpg|png|gif|swf)$/i", $arquivo["type"])){

$erro[] = "Arquivo em formato invlido! Arquivos devem ser do tipo: jpg, png jpeg ou gif.";
echo "<script language='JavaScript'>

alert('Arquivo em formato invlido! Formato aceito: JPG, JPEG, SWF,JPG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}else{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no mximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
echo "<script language='JavaScript'>
alert('A imagem deve ser de no mximo ". $config["tamanho"] ." bytes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Para verificar as dimenses da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem no pose ser
maior que " . $config["largura"] . " pixels";
echo "<script language='JavaScript'>
alert('A largura da imagem nao pode ser maior que ". $config["tamanho"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem no pode ser
maior que " . $config["altura"] . " pixels";
echo "<script language='JavaScript'>
alert('A altura da imagem nao pode maior que ". $config["altura"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";

}
}
// Verificao de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem irá ficar
$imagem_dir = "../img_imoveis/album/" . $imagem_nome;

extract( $_POST, EXTR_OVERWRITE);
$sql = $MySQLi->query("INSERT INTO fotos (id_imovel, foto, obs_foto) VALUES ('$id', '$imagem_nome', '$desc_')") or print(mysqli_error());

if($sql ==1){
// Faz o upload da imagem
echo $arquivo["name_tempo"];
// se a imagem for maior que 500 redimensiona, se no for, apenas faz o upload

// 0 largura, 1 altura//
//Fazendo o redimensionamento de largura e altura e incluindo a marca d'água//
if( $tamanhos[0] >200 || $tamanhos[1] > 100 ){

require_once( "WideImage/WideImage.php");

$foto_temp= $_FILES['foto']['tmp_name'];
$foto= $_FILES['foto']['name'];
$foto=  WideImage::load($foto_temp);
$foto =$foto->resize(900, 540, 'fill');

$marca = WideImage::load("../images/marca1.png");

$redimensionar =$foto->merge($marca,'center','center');
$redimensionar->SaveToFile("../img_imoveis/album/". $imagem_nome);


}else{

move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
}
echo "<br /><br /><div align='center'><b>Foto adicionada com sucesso</b><br><br /><a href=album_add.php?id=$id><span class='but but-primary but-shadow but-rc'><font color='#ffffff' size='2' face='Arial, Helvetica, sans-serif'>  clique aqui para voltar</font>  </span></a>
</div>";
}else{
echo "<br /><br />ERRO AO TENTAR ADICIONAR FOTO<br><br><a href=album_add.php?id=$id>clique aqui para voltar e tente novamente</a>";
}
}
}
}
// fecha o add
?>

Como eu disse ele funciona legal mas envia somente um 1 arquivo estou tentando aqui adaptá-lo para mult arquivos, eu coloquei dentro do form em vez de name"foto" coloquei name"foto[]" mas da um erro ele não enxerga o formato do arquivo e gera este erro: preg_match() expects parameter 2 to be string, array given in C:\wamp\www\web\adm\album_add.php on line 210

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai pessoal é o seguinte, eu tratei este meu código usando o Foreach para poder tratar os arquivos vindo do array pelo name="foto[]", mas ainda não deu certo, esta dando um erro na função preg_match, porque além disso esse meu código converte o nome do arquivo em md5 e envia a imagem usando a função do WideImage para redimensionar e colocar a marca d'água , como disse anteriormente este meu código funciona corretamente para o envio de 1 arquivo apenas necessito ele para mult-uploads... Segue o código.

<?php
if($acao =='add'){

echo "<pre>";
print_r($_FILES);
echo "</pre>";


$erro = $config = array();
// Prepara a varivel do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
// Tamanho mximo do arquivo (em bytes)
$config["tamanho"] = 2010680;
// Largura mxima (pixels)
$config["largura"] = 2024;
// Altura mxima (pixels)
$config["altura"]  = 1768;
// Formulário postado... executa as aes
if($arquivo)
{  
// Verifica se o mime-type do arquivo  de imagem
if(!preg_match("/^image\/(pjpeg|jpeg|jpg|png|gif|swf)$/i")){

$erro[] = "Arquivo em formato inválido! Arquivos devem ser do tipo: jpg, png jpeg ou gif.";
echo "<script language='JavaScript'>

alert('Arquivo em formato inválido! Formato aceito: JPG, JPEG, SWF,JPG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}else{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
echo "<script language='JavaScript'>
alert('A imagem deve ser de no máximo ". $config["tamanho"] ." bytes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Para verificar as dimenses da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem no pose ser
maior que " . $config["largura"] . " pixels";
echo "<script language='JavaScript'>
alert('A largura da imagem nao pode ser maior que ". $config["tamanho"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem no pode ser
maior que " . $config["altura"] . " pixels";
echo "<script language='JavaScript'>
alert('A altura da imagem nao pode maior que ". $config["altura"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";

}
}
// Verificao de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem irá ficar
$imagem_dir = "../img_imoveis/album/" . $imagem_nome;

extract( $_POST, EXTR_OVERWRITE);
$sql = $MySQLi->query("INSERT INTO fotos (id_imovel, foto, obs_foto) VALUES ('$id', '$imagem_nome', '$desc_')") or print(mysqli_error());

if($sql ==1){
// Faz o upload da imagem
echo $arquivo["name_tempo"];
// se a imagem for maior que 500 redimensiona, se no for, apenas faz o upload

// 0 largura, 1 altura//
//Fazendo o redimensionamento de largura e altura e incluindo a marca d'água//
if( $tamanhos[0] >200 || $tamanhos[1] > 100 ){



//---------------ADAPTAÇÃO DO FOREACH---------------------//
$files=array();$i=0;
for($i = 0; $i < count($_FILES['foto']['tmp_name']); $i++){
    foreach($_FILES['foto'] as $key => $val){
        $files[$i][$key] = $val[$i];
    }
}
foreach($files as $file){

require_once( "WideImage/WideImage.php");

$foto_temp= $_FILES['foto']['tmp_name'];
$foto= $_FILES['foto']['name'];
$foto=  WideImage::load($foto_temp);
$foto =$foto->resize(900, 540, 'fill');

$marca = WideImage::load("../images/marca1.png");

$redimensionar =$foto->merge($marca,'center','center');
$redimensionar->SaveToFile("../img_imoveis/album/". $imagem_nome);

}

echo "<br /><br /><div align='center'><b>Foto adicionada com sucesso</b><br><br /><a href=album_add.php?id=$id><span class='but but-primary but-shadow but-rc'><font color='#ffffff' size='2' face='Arial, Helvetica, sans-serif'>  clique aqui para voltar</font>  </span></a>
</div>";
}else{
echo "<br /><br />ERRO AO TENTAR ADICIONAR FOTO<br><br><a href=album_add.php?id=$id>clique aqui para voltar e tente novamente</a>";
}
}
}
}}
// fecha o add
?>

Procurei até no Ghitub e não consegui uma solução. E pelo que entendi quando coloco name="foto[]" a função preg_match não lê o type que gera um array e a extensão do arquivo fica entre parênteses por causa do uso do [ ] no resultado que no caso a extensão do arquivo só encontra-se no type quando se envia apenas 1 arquivo desta maneira name="foto', só estou com dificuldades em adaptar o foreach neste script, porque nele consigo usar o md5 e inserir marca d água nas imagens .

Array
(
	[arquivo] => Array
		(
			[name] => Array
				(
					[0] => arquivo1.txt
					[1] => arquivo2.txt
					[2] => arquivo3.txt
				)

			[type] => Array
				(
					[0] => text/plain
					[1] => text/plain
					[2] => text/plain
				)

			[tmp_name] => Array
				(
					[0] => C:\WINDOWS\TEMP\php8.tmp
					[1] => C:\WINDOWS\TEMP\php9.tmp
					[2] => C:\WINDOWS\TEMP\phpA.tmp
				)

			[error] => Array
				(
					[0] => 0
					[1] => 0
					[2] => 0
				)

			[size] => Array
				(
					[0] => 621
					[1] => 455
					[2] => 579
				)

		)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Ótima ideia, mais de qualquer forma você vai ter que fazer um foreach, porque

 

Por exemplo:

 

antes você fazia assim par apegar os dados

$_FILE['foto'][ aqui seria o vetor tmp_name, size, etc...];

Agora você vai ter que trabalhar da seguinte maneira:

$_FILE['foto'][ aqui seria o vetor tmp_name, size, etc...][Aqui agora entra a posição do vetor 0,1,2....];

 

Jeovane Carvalho Você viu o post que fiz ali em cima informando como trabalhar com eles ?

 

o vetor?

 

Abaixo eu vou colocar m exemplo funcional do que estava falando, atente para repara nas variáveis dos arquivos Segue o código:

 /** RECEBENDO E TRABALHANDO OS AQRUIVOS **/
          
          // gera um vetor usando como base os nomes deles,
          // Assim eu vou poder pegar todos os possivel sem ter que ficar editando código.
          
          $array_arquivo_names = $_FILES['arquivos']['name'];
          
          // DATA para criar o diretório de destino.
          
          $data_diretorio = date('Y-m')."/";          
          
          //echo  $SAG_webfiles.$dir_arq_financeiro."/".$data_diretorio;
          
          //Salvo em apenas uma variavel esse dierório posso mudar maistarde mais só chuda a visualizar não altera em nada
          
          $diretorio_arquivo =  $SAG_webfiles.$dir_arq_financeiro."/";
          
                   
          $array_arquivo = $_FILES['arquivos'];
          
          $c = 99;
          $cont_erro_hash = 0;
          foreach($array_arquivo_names as $key => $array_indivitual)          
          {
              $nome_arquivo = $array_arquivo['name'][$key];
              $type_arquivo = $array_arquivo['type'][$key];
              $tmp_name_arquivo = $array_arquivo['tmp_name'][$key];
              $erro_arquivo = $array_arquivo['error'][$key];
              $size_arquivo = $array_arquivo['size'][$key];
              $descricao_query = $descricao_arquivo[$key];
              
              // verificando se ja existe ele no banco caso sim eu copio novamente o mesmo arquivo.
              
             
              if($erro_arquivo == 0)
              {                
                      // gerando o hash do arquivo . ele tem que pegar diretamente o arquivo.
              
                      $sha1_arquivo = gera_hash($tmp_name_arquivo);
                      
                      // echo"<pre>"; var_dump($sha1_arquivo); echo"<pre>";
                      
                      if(!verifica_hash_arquivo($sha1_arquivo))
                      {
                        
                          // se não existir aqui eu vo criar o diretório usando o ano-mes como nome da pasta.  
                          if(!is_dir($diretorio_arquivo.$data_diretorio))
                          {
                             if(!mkdir($diretorio_arquivo.$data_diretorio, 0777))
                             {
                                echo "<pre> você não tem pemição para criar essa pasta <pre>";
                             }
                          }
                          
                           // vefirica se esta na lista de arquivos permitidos se não retorna false e não fas todo processo a seguir
                           $icone_arquivo = verificar_tipo_arquivo($type_arquivo);
                           if($icone_arquivo)
                           {
                                         
                              // tratando nome do arquivo...                  
                              $t2 = $nome_arquivo;
                              $nome_arquivo = strtr($t2, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"); 
                              $nome_arquivo = ereg_replace('[^a-zA-Z0-9_.]', '', $nome_arquivo);
                              $nome_arquivo = strtolower($nome_arquivo);
                             
                              if(is_file($diretorio_arquivo.$data_diretorio.$nome_arquivo))
                              {
                                //coloco um numero aleatórop caso ja exista :)
                                $rand = rand(1, 99);
                                $nome_arquivo = "$rand"."_".$nome_arquivo; 
                              }
                             
                              // movendo os arquivos para dentro do diretório....
                             
                              //echo $tmp_name_arquivo, $diretorio_arquivo.$data_diretorio.$nome_arquivo."<br />";
                             
                              if(move_uploaded_file($tmp_name_arquivo, $diretorio_arquivo.$data_diretorio.$nome_arquivo))
                              {
                                // caso tenha um id ja posso fazer aqui :) prontinho.
                                if($id_despesa!=NULL)
                                {
                                    // tratando descricao.....
                                    $descricao_query = htmlentities($descricao_query, ENT_QUOTES);
                                    $vetor_query[]="INSERT fin_arquivos (nome, hash, diretorio, id_despesa, descricao, type) VALUES ('$nome_arquivo', '$sha1_arquivo', '$data_diretorio', '$id_despesa', '$descricao_query', '$type_arquivo' )";                        
                                }
                                //caso não ai vai ser mai chato
                                else
                                {
                                    // tratando descricao.....
                                    $descricao_query = htmlentities($descricao_query, ENT_QUOTES);
                                   $vetor_query[]="INSERT fin_arquivos (nome, hash, diretorio, id_despesa, descricao, type) VALUES ('$nome_arquivo', '$sha1_arquivo', '$data_diretorio', @id_despesa , '$descricao_query', '$type_arquivo' )";
                                }
                              }
                           } // fecha verificação de tipo de arquivo.
                      }// fecha verifica hash
                      else
                      {
                          // caso ja tenha algum cadastrado eu vo tertornar para o usuário a quantidade de arquivos que não foi enviado.
                          // ja ajuda o resto é para manutenção :)
                          $erro_hash = "erro";
                          $cont_erro_hash++;
                      }     
              } // close erro 0*/
             
          }  //close foreach

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Thiago ;Bulfaitelo eu até tentei mas , me explique uma coisa será que preciso retirar a função preg_match quando se trabalha com vetor, pois eu uso ela pra saber se o que o usuário esta enviando é uma imagem, eu não gosto muito de Ctrl+c Ctrl+v, gosto de redigitar a programação e entender sua lógica, mas você já esta me ajudando muito, esse script peguei ele cheio de erros e troquei algumas funções depreciadas e implementei o WideImage, mas tenho certeza que conseguirei alcançar meus objetivos , sempre foco e fé. Só preciso entender melhor essas adaptações...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o meu código não e limitado a somente imagens,e em relação ao preg_math eu lembro que tive problemas com ele ao ao utiliza-lo para tratar o texto (depois de vetorizar os arquivos, mesmo não tendo nada a ver eu não conseguir), eu prefiro usar o type e fazer uma comparação com vetor predeterminado, pelo menos comigo deu certo, mais foi necessário ir testando os tipos de arquivos para ir acertando de acordo com o tipo desejado, porque não e legal compara extensão e sim o binário dele por meio de segurança.

 

Abraço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Thiago isso mesmo, acho que vou ter que remover o preg_match, porque me parece que ele não consegue ler vetores e por isso não consegui fazer com que o php leia todo o código ele só enxerga até o preg_match e dá aquele erro, vou tentar adaptar aqui da sua forma e se tiver êxito eu posto o código completo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Thiago isso mesmo, acho que vou ter que remover o preg_match, porque me parece que ele não consegue ler vetores e por isso não consegui fazer com que o php leia todo o código ele só enxerga até o preg_match e dá aquele erro, vou tentar adaptar aqui da sua forma e se tiver êxito eu posto o código completo..

 

Ótima ideia, ps eu nunca fui muito bom com expressões regulares :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Thiago estou fazendo uns testes aqui e acho que vai dar para o preg_match pegar a extensão do arquivo dentro dos vetores, eu adaptei o Foreach e parece que vai dar certo vou finalizar aqui e posto o código pra tu ver...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para obter a extensão do arquivo existe uma solução mais simples:

$file = $_FILES["file"]["name"];
$ext = explode(".", $file);

echo $ext[count($ext)];

ou, simplificando

echo explode(".", $_FILES["file"]["name"])[count(explode(".", $_FILES["file"]["name"]))];

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para obter a extensão do arquivo existe uma solução mais simples:

$file = $_FILES["file"]["name"];
$ext = explode(".", $file);

echo $ext[count($ext)];

ou, simplificando

echo explode(".", $_FILES["file"]["name"])[count(explode(".", $_FILES["file"]["name"]))];

Abraços.

 

se for se basear pela extensão o usuário pode subir qualquer arquivo com a extensão determinada. não é seguro.

 

 

e essa dica ai é um ótima dica :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente quero agradecer ao Thiago Bulfaitelo, Extremns X, Beraldo e também ao Back on, E Thiago Bulfaitelo a sua dica de usar o Foreach foi valiosa para mim obrigadão man, com a grande ajuda de vocês consegui chegar no resultado esperado, e me corrijam se meu script estiver com erros , mas aqui no meu site rodou beleza, e agora meu script esta enviando diversas imagens de uma só vez além de renomear o nome do arquivo com MD5, e também esta enviando ao banco de dados e o mais importante para mim também é a marca d'água com WILDEIMAGE que esta funcionando completamente e como prometi deixo o script completo com o css e a inserção dos botões inputs com AJAX segue o script abaixo funcionando:

 

 

 

 

Script em css dos botões dos inputs em AJAX (opcional)

/* Progressbar */
#progressbox {
	border: 1px solid #0099CC;
	padding: 1px;
	position:relative;
	border-radius: 3px;
	margin: 10px;
	display:none;
	text-align:left;
}
#progressbar {
	height:20px;
	border-radius: 3px;
	background-color: #006699;
	width:1%;
}
#statustxt {
	top:3px;
	left:50%;
	position:absolute;
	display:inline-block;
	color: #000000;
	font-size: 12px;
	line-height: 15px;
}

/* Form */
#uploaderform{
	margin-left:70px;
width:450px;
padding:14px;
border: solid 1px #EBE6E6;
background: #F5F5F5;
border-radius: 10px;
font-family:Arial, Helvetica, sans-serif;
}
#uploaderform h1 {
font-family:"Trebuchet MS";
font-size:14px;
font-weight:bold;
margin-bottom:8px;
}
#uploaderform p{
font-size:11px;
color:#666666;
margin-bottom:20px;
border-bottom:solid 1px #E0E0E0;
padding-bottom:10px;
}
#uploaderform label{
display:block;
font-weight:bold;
text-align:right;
width:140px;
float:left;
}
#uploaderform .small{
color:#666666;
display:block;
font-size:11px;
font-weight:normal;

width:140px;
margin-left:0px;
}
#AddFileInputBox span{
display:block;
clear:both;
margin-left:0px;
}
.sep_s{margin-top: 70px!important;}

#AddFileInputBox .small2{
font-size:11px;
font-weight:normal;
text-align:right;
margin-left:0px;
}
#AddFileInputBox .small2 img{
margin-top:10px;
margin-left:5px;
float:left;
border:none;
}
.addedInput{margin-left:10px!important;margin-bottom:5px!important;}

#uploaderform input{
float:left;
font-size:12px;
padding:4px 2px;
border:solid 1px #E0E0E0;
width:400px;
margin:2px 0 20px 10px;
}
#uploaderform textarea{
float: left;
font-size: 12px;
padding: 4px 2px;
border: solid 1px #E0E0E0;
width: 200px;
margin: 2px 0 20px 10px;
height: 100px;
}

#uploaderform select{
float:left;
font-size:12px;
padding:4px 2px;
border:solid 1px #E0E0E0;
width:200px;
margin:2px 0 20px 10px;
}
#output ul{
margin: 20px;
padding:0px;
}

#output li{
margin-bottom: 20px;
border-bottom: 1px solid #DDD;
padding-bottom: 10px;
list-style: none;
background: #DDD;
padding: 10px;
overflow: hidden;
border-radius: 10px;
}
.error{color:red;font-size:11px;margin:10px}
.button {
	-moz-box-shadow:inset 0px 1px 0px 0px #dcecfb;
	-webkit-box-shadow:inset 0px 1px 0px 0px #dcecfb;
	box-shadow:inset 0px 1px 0px 0px #dcecfb;
	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bddbfa), color-stop(1, #80b5ea) );
	background:-moz-linear-gradient( center top, #bddbfa 5%, #80b5ea 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bddbfa', endColorstr='#80b5ea');
	background-color:#bddbfa;
	-moz-border-radius:6px;
	-webkit-border-radius:6px;
	border-radius:6px;
	border:1px solid #84bbf3;
	display:inline-block;
	color:#3b6c80;
	font-family:Arial;
	font-size:15px;
	font-weight:normal;
	padding:6px 24px;
	text-decoration:none;
	text-shadow:1px 1px 0px #c0ccdb;
	margin-top: 20px;
	margin-bottom: 20px;
}.button:hover {
	background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #80b5ea), color-stop(1, #bddbfa) );
	background:-moz-linear-gradient( center top, #80b5ea 5%, #bddbfa 100% );
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80b5ea', endColorstr='#bddbfa');
	background-color:#80b5ea;
}.button:active {
	position:relative;
	top:1px;
}
#SubmitButton{clear:both;margin-left:150px;}

/* result */
#uploadResults {
	width: 600px;
	margin-right: auto;
	margin-left: auto;
}

E o essencial o script PHP rodando beleza:

<?php 
include_once("../config.php"); 

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="2000;url=http://localhost/web/adm/sair.php">
<title>Sistema de Administração de Imóves -  Imobili San</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" href="css.css" rel="stylesheet" />

<link href="style.css" rel="stylesheet" type="text/css" />
<!-------O LINK ABAIXO É QUE FAZ A FUNÇÃO DOS BOSTÕES EM AJAX FUNCIONAREM IMPORTANTE-------------->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<!-------FIM DO LINK  QUE FAZ A FUNÇÃO DOS BOSTÕES EM AJAX FUNCIONAREM IMPORTANTE-------------->

<!-------SCRIPT JS QUE CONTROLA AS FUNÇÕES DOS INPUTS-------------->

<script type="text/javascript"> 
$(document).ready(function() { 
//elements
var progressbox 		= $('#progressbox'); //progresso bar invólucro
var progressbar 		= $('#progressbar'); //elemento da barra de progresso
var statustxt 			= $('#statustxt'); //status de elemento de texto
var submitbutton 		= $("#SubmitButton"); //submit button
var myform 				= $("#UploadForm"); //upload form
var output 				= $("#output"); //ajax result output element
var completed 			= '0%'; //valor inicial progressbar
var FileInputsHolder 	= $('#AddFileInputBox'); //Elemento onde as entradas de arquivos adicionais são acrescentadas
var MaxFileInputs		= 40; //Número máximo de INPUTS de entrada de arquivo


// adding and removing file input box
var i = $("#AddFileInputBox div").size() + 1;
$("#AddMoreFileBox").click(function(event)
 {
event.returnValue = false;
if(i < MaxFileInputs)
{
$('<span><input type="file" id="fileInputBox" size="20" name="foto[]" multiple class="addedInput" value=""/><a href="#" class="removeclass small2"><img src="imagens/close_icon.gif" border="0" /></a></span>').appendTo(FileInputsHolder);
i++;
}
return false;
});

$("body").on("click",".removeclass", function(event){
event.returnValue = false;
if( i > 1 ) {
$(this).parents('span').remove();i--;
}
}
)
; 
$("#ShowForm").click(function () {
  $("#uploaderform").slideToggle(); //Slide Toggle upload form on click
});
$(myform).ajaxForm({
beforeSend: function() { //brfore sending form
submitbutton.attr('disabled', ''); // disable upload button
statustxt.empty();
progressbox.show(); //show progressbar
progressbar.width(completed); //initial value 0% of progressbar
statustxt.html(completed); //set status text
statustxt.css('color','#000'); //initial color of status text
},
uploadProgress: function(event, position, total, percentComplete) { //on progress
progressbar.width(percentComplete + '%') //update progressbar percent complete
statustxt.html(percentComplete + '%'); //update status text
if(percentComplete>50)
{
statustxt.css('color','#fff'); //change status text to white after 50%
}else{
statustxt.css('color','#000');
}
},
complete: function(response) { // on complete
output.html(response.responseText); //update element with received data
myform.resetForm();  // reset form
submitbutton.removeAttr('disabled'); //enable submit button
progressbox.hide(); // hide progressbar
$("#uploaderform").slideCenter(); // hide form after upload
}
});
}); 
</script> 
<!-------FIM DO SCRIPT JS QUE CONTROLA AS FUNÇÕES DOS INPUTS-------------->

</head>
<body>
<div id="container">
<div align="center">
<table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" class="borda"><!--DWLayoutTable-->
<tr>
<td height="51" colspan="2" valign="top" class="borda2"></td>
</tr>
<tr>
<td width="255" rowspan="5" valign="top" class="borda_menu">
      
 </td>
<td width="612" rowspan="5" valign="top" class="borda_menu">
<table width="388" border="0" align="center" cellpadding="0" cellspacing="0">
<tr> 
<td width="115" height="13"></td>
<td width="28"></td>
<td width="115"></td>
<td width="15"></td>
<td width="115"></td>
</tr>

<tr> 
<td height="34"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<?php
//INÍCIO DO FORMULÁRIO QUE ENVIA MÚLTIPLOS ARQUIVOS DENTRO DO ECHO//
if($acao ==''){
echo '<div id="uploaderform" align="center">
<form action="album_add.php?acao=add&id='.$id.'" method="post" enctype="multipart/form-data" name="UploadForm">
<p align="center"><b>Imagem</b><br/>
<label>Files
<span class="small"><a href="#" id="AddMoreFileBox"><button type="submit" class="button" >Add + Fotos</button></a></span>
</label>
<br />
<div id="AddFileInputBox">
<input id="fileInputBox" name="foto[]" multiple type="file"/></div>
<div class="sep_s"></div>
</p>
<p align="center"> 
<button type="submit" class="button" id="SubmitButton">Enviar Foto</button>
<div id="progressbox"><div id="progressbar"></div ><div id="statustxt">0%</div ></div>

</p>
</form></div>';
//FIM DO FORMULÁRIO QUE ENVIA MÚLTIPLOS ARQUIVOS DENTRO DO ECHO//
}// FECHA principal
?>

<?php
//INÍCIO DA FUNÇÃO DO PHP QUE LÊ E ENVIA OS ARQUIVOS VINDO DOS VETORES NAME="FOTO[]"//
if($acao =='add'){
$erro = $config = array();
// Prepara a variável do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 2010680;
// Largura máxima (pixels)
$config["largura"] = 2024;
// Altura máxima (pixels)
$config["altura"]  = 1768;
// Formulário postado... executa as funções//

//AQUI É O FOREACH QUE ADAPTEI PARA LER OS VETORES NAME="FOTO[]" VINDOS DO FORMULÁRIO//
if($arquivo)
{  
$array_arquivo_names = $_FILES['foto']['name'];
foreach($array_arquivo_names as $key => $array)          
{
$nome_arquivo = $arquivo['name'][$key];
$type_arquivo = $arquivo['type'][$key];
$tmp_name_arquivo = $arquivo['tmp_name'][$key];
$erro_arquivo = $arquivo['error'][$key];
$size_arquivo = $arquivo['size'][$key];
$descricao_query = $descricao_arquivo[$key];
//FIM DO FOREACH //

// Verifica se o mime-type do arquivo  de imagem
if(!preg_match("/^image\/(pjpeg|jpeg|jpg|png|gif|swf)$/i", $type_arquivo)){

$erro[] = "Arquivo em formato inválido! Arquivos devem ser do tipo: jpg, png jpeg ou gif.";
echo "<script language='JavaScript'>

alert('Arquivo em formato inválido! Formato aceito: JPG, JPEG, SWF,JPG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}else{
// Verifica tamanho do arquivo
if($size_arquivo > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande! 
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
echo "<script language='JavaScript'>
alert('*ERRO* A imagem deve ser de no máximo ". $config["tamanho"] ." bytes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($tmp_name_arquivo);
// Verifica a largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem no pode ser 
maior que " . $config["largura"] . " pixels";
echo "<script language='JavaScript'>
alert('*ERRO* A largura da imagem nao pode ser maior que ". $config["tamanho"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Verifica a altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem no pode ser
maior que " . $config["altura"] . " pixels";
echo "<script language='JavaScript'>
alert('*ERRO* Essa Imagem têm a altura maior que ". $config["altura"] ." pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
}
// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";
}
}
// Verificao de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
//AQUI É O FOR QUE ADAPTEI PARA CONTAR O ARQUIVOS NAME="FOTO[]" VINDOS DO FORMULÁRIO//

for ($i = 0; $i < count($nome_arquivo); $i++)
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $nome_arquivo, $ext);

//AQUI TROCA O NOME DO ARQUIVO PARA MD5 CODIFICADO//
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde a imagem irá ficar//

$imagem_dir = "../img_imoveis/album/" . $imagem_nome;

//AQUI É O ENVIO PARA O BANCO DE DADOS O NOME DO ARQUIVO//
extract( $_POST, EXTR_OVERWRITE);
$sql = $MySQLi->query("INSERT INTO fotos (id_imovel, foto, obs_foto) VALUES ('$id', '$imagem_nome', '$desc_')") or print(mysqli_error());

if($sql ==1){
// Faz o upload da imagem
echo $arquivo["name_tempo"];

// LOGO ABAIXO FIZ UM IF PARA QUE A IMAGEM MENOR QUE 100 PIXELS NÃO SEJE REDIMENSIONADA PELO WIDEIMAGE E CAIA DIRETO NA FUNÇÃO move_uploaded_file
//VOCÊ TAMBÉM PODE ALTERAR ESSES VALORES DE REDIMENSIONAMENTO POR EXEMPLO $tamanhos[0] >500 || $tamanhos[1] > 500 )//
if( $tamanhos[0] >100 || $tamanhos[1] > 100 ){
// 0 largura,              1 altura//

//ABAIXO USO A FUNÇÃO WIDEIMAGE PARA REDIMENSIONAR FOTOS ACIMA DE 100 PIXELS E INSERIR A MARCA D'ÁGUA, VOCÊ BAIXA AS CLASSES WIDEIMAGE NO SITE DOS DESENVOLVEDORES //
require_once( "WideImage/WideImage.php");
//ABAIXO PEGA O ARQUIVOS TEMPORÁRIOS SELECIONADO NOS INPUTS//
$foto_temp= $tmp_name_arquivo;
//ABAIXO PEGA O NOME DA IMAGEM//
$foto= $array_arquivo_names;
//ABAIXO FAZ O LOAD DA IMAGEM SELECIONADA NO $tmp_name_arquivo//
$foto=  WideImage::load($foto_temp);

//LOGO ABAIXO É O TAMANHO DAS IMAGENS QUE SERÃO REDIMENSIONADAS , É OPCIONAL VOCÊ PODE COLOCAR O TAMANHO QUE DESEJAR//
$foto=$foto->resize(900, 540, 'fill');

//ABAIXO USA-SE A FUNÇÃO LOAD E MERGE PARA INSERIR A MARCA D'ÁGUA NAS SUAS IMAGENS E ABAIXO VOCÊ PODE CENTRALIZAR A MARCA D'ÁGUA OU POR NA LATERAL COMO QUISER//
$marca = WideImage::load("../images/marca1.png");

//ABAIXO VOCÊ COLOCA A POSIÇÃO DA MARCA D'ÁGUA USANDO A FUNÇÃO MERGE//
$redimensionar =$foto->merge($marca,'center','center');

//AQUI LOGO ABAIXO É O MAIS IMPORTANTE PARA ENVIAR O ARQUIVO DEVE COLOCAR O ENDEREÇO CORRETO PARA AS IMAGENS IR PARA A SUA PASTA DE IMAGENS//
// EXEMPLO ACIMA $imagem_dir = "../img_imoveis/album/" . $imagem_nome; //
//$imagem_nome; É A STRING QUE ESTA A IMAGEM CODIFICADA PELO MÉTODO MD5
$redimensionar->SaveToFile($imagem_dir);

}else{
//AQUI ENVIA A IMAGEM MENOR QUE 100 PIXEL E VOCÊ PODE ALTERAR ESSES VALORES//
move_uploaded_file($tmp_name_arquivo, $imagem_dir);
}
}
}
}
}
}
//ABAIXO DA UMA MENSAGEM QUE SUA MENSAGEM FOI ENVIADA COM SUCESSO//
if($tmp_name_arquivo){
echo "<br /><br /><div align='center'><b>Fotos adicionada com sucesso</b><br /><br /><a href=album_add.php?id=$id><span class='but but-primary but-shadow but-rc' id='fotos_excluir'><font color='#ffffff' size='2' face='Arial, Helvetica, sans-serif'>  Clique aqui para voltar</font>  </span></a>
</div>";
//E AQUI ABAIXO DA UMA MENSAGEM DE ERRO CASO HAJA ALTERAÇÃO NO SCRIPT OU ERRO NO SERVIDOR//
}else{
echo "<br /><br />ERRO AO TENTAR ADICIONAR FOTO<br><br><a href=album_add.php?id=$id>clique aqui para voltar e tente novamente</a>";
}
}
// FECHA O SCRIP PHP ADD
?>
</p>
</td>
<td width="133" height="23" colspan="3" valign="top" class="borda3"></td>
</tr>
<tr>
<td height="18" valign="top" bgcolor="#f2f2f2">
</td>
</tr>
</table>
</div>
</div>
</body>
</html>

Para quem não tiver as classes WIDEIMAGE deixo o link para baixá-lo http://wideimage.sourceforge.net/download/

 

 

Obrigado à todos e espero que este meu script seje útil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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