Ir para conteúdo

POWERED BY:

Arquivado

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

tiagocaus

Foreach

Recommended Posts

Estou tentando fazer o upload de no máximo 5 imagens juntas, mas sem sucesso.

Conseguiria me ajudar?

 

OS CAMPOS SÃO:

Foto1: <input type="file" name="foto[]" size="32" onchange="preview(this);" />
Foto2: <input type="file" name="foto[]" size="32" onchange="preview(this);" />
Foto3: <input type="file" name="foto[]" size="32" onchange="preview(this);" />
Foto4: <input type="file" name="foto[]" size="32" onchange="preview(this);" />
Foto5: <input type="file" name="foto[]" size="32" onchange="preview(this);" />

 

 

PHP:

// Definimos as configurações desejadas da imagem maior
$handle = new Upload($_FILES['foto']);

foreach($_FILES['foto']['name'] as $key => $foto){
$campo[ $key ] = $foto;

   if ($handle->uploaded){
      $handle->file_new_name_body   = $foto;
         $handle->image_resize         = true;
      $handle->image_x              = 500;
         $handle->image_ratio_x        = true;
      $handle->jpeg_quality         = 70;
      $handle->image_convert        = 'jpg';
      $handle->mime_check = true;
      $handle->Process('images/produtos/'.$url.'/');
      $foto = $handle->file_dst_name;
      
      if ($handle->processed) {
       $handle->clean();
       }else{
          echo '  Erro: ' . $handle->error . '';
       }
   }

// Aqui nos devifimos nossas configurações de imagem do thumbs
        $handle->image_resize            = true;
        $handle->image_ratio_y           = false;
        $handle->image_x                 = 100;
      $handle->image_y                 = 75;
        $handle->image_contrast          = 10;
      $handle->jpeg_quality            = 60;
      $handle->auto_create_dir       = true;

        // Definimos a pasta para onde a imagem thumbs será armazenada
      $handle->Process('images/produtos/'.$url.'/thumbs/');

        // Excluimos os arquivos temporarios
        $handle-> Clean();
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou utilizando essa class: http://www.revistaphp.com.br/artigo.php?id=177

 

 

Não mostrava nenhum erro. Cadastra no BD certinho, menos enviar as imagens.

Ai coloquei esse código para forçar um erro:

 

ini_set('display_errors',1);

ini_set('display_startup_erros',1);

error_reporting(E_ALL);

 

Ai apareceu esse erro, que não entendi...

 

 

 

Notice: Array to string conversion in /home/xxxx/public_html/class/class.upload.php on line 2475

 

Warning: preg_match() expects parameter 2 to be string, array given in /home/xxxx/public_html/class/class.upload.php on line 2526

 

Notice: Array to string conversion in /home/xxx/public_html/class/class.upload.php on line 2658

 

Warning: getimagesize(Array) [function.getimagesize]: failed to open stream: No such file or directory in /home/xxx/public_html/class/class.upload.php on line 2658

 

Warning: preg_match() expects parameter 2 to be string, array given in /home/xxx/public_html/class/class.upload.php on line 2685

Erro: File too big.

 

Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/public_html/class/class.upload.php:1) in /home/xxxx/public_html/c.produtoAdicionar.php on line 207

 

 

 

Alguma sugestão pessoal?

 

Entrei em contato com o Autor.
Procure por: What about multiple uploads?
Eu não sou muito bom em orientação a objetos, você poderia mostrar no meu codigo a forma correta?
foreach($_FILES['foto']['name'] as $key => $foto){
 $campo[ $key ] = $foto;

  // Definimos as configurações desejadas da imagem maior
  $handle = new Upload($_FILES['foto']);
if ($handle->uploaded){
$handle->file_new_name_body   = $foto;
      $handle->image_resize         = true;
$handle->image_x              = 500;
      $handle->image_ratio_x        = true;
$handle->jpeg_quality         = 70;
$handle->image_convert        = 'jpg';
#$handle->image_watermark_position = "XXX.com";
#$handle->image_watermark_x = -15;
$handle->mime_check  = true;
$handle->Process('images/produtos/'.$url.'/');
$foto = $handle->file_dst_name;

if($handle->processed){
true;
}else{
echo 'Erro ao enviar imagem: '.$handle->error;
}

// Aqui nos devifimos nossas configurações de imagem do thumbs
$handle->file_new_name_body      = $foto;
        $handle->image_resize            = true;
        $handle->image_ratio_y           = false;
        $handle->image_x                 = 100;
$handle->image_y       = 75;
        $handle->image_contrast          = 10;
$handle->jpeg_quality            = 60;
#$handle->image_watermark_position = "XXXX.com";
#$handle->image_watermark_x = -15;
$handle->auto_create_dir = true;
$handle->file_safe_name = true;
$handle->Process('images/produtos/'.$url.'/thumbs/');

        if($handle->processed){
true;
}else{
echo 'Erro ao enviar imagem: '.$handle->error;
}
    } 
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

no manual ele tras como montar o multiplo dawnload, vc está utilizando um foreach e no manual ele usa um dentro do outro.

 

olha só

$files = array();
foreach ($_FILES['my_field'] as $k => $l) { 
     foreach ($l as $i => $v) { 
         if (!array_key_exists($i, $files))   
           $files[$i] = array();   
           $files[$i][$k] = $v; 
     }
}      

Compartilhar este post


Link para o post
Compartilhar em outros sites

É eu vi isso e modifiquei para, mas mesmo assim não vai.

 

Veja se fiz algo de errado:

 

 

$files = array();
foreach($_FILES['foto']['name'] as $key => $foto){
$campo[ $key ] = $foto;

 foreach ($l as $i => $v) {
 if (!array_key_exists($i, $files))
   $files[$i] = array();
   $files[$i][$k] = $v;
 }
}      


foreach ($files as $file) {
 
 	// Definimos as configurações desejadas da imagem maior
 	$handle = new Upload($_FILES['foto']);
	if ($handle->uploaded){
		$handle->file_new_name_body   = $foto;
          	$handle->image_resize         = true;
		$handle->image_x              = 500;
        	$handle->image_ratio_x        = true;
		$handle->jpeg_quality         = 70;
		$handle->image_convert        = 'jpg';
		$handle->mime_check	      = true;
		$handle->Process('images/produtos/'.$url.'/');
		$foto = $handle->file_dst_name;
		
			if($handle->processed){
					true;
				}else{
					echo 'Erro ao enviar imagem: '.$handle->error;
				}

		// Aqui nos devifimos nossas configurações de imagem do thumbs
		$handle->file_new_name_body      = $foto;
                $handle->image_resize            = true;
                $handle->image_ratio_y           = false;
                $handle->image_x                 = 100;
		$handle->image_y       		 = 75;
                $handle->image_contrast          = 10;
		$handle->jpeg_quality            = 60;
		$handle->auto_create_dir         = true;
		$handle->file_safe_name          = true;
		$handle->Process('images/produtos/'.$url.'/thumbs/');
 
        if($handle->processed){
					true;
				}else{
					echo 'Erro ao enviar imagem: '.$handle->error;
				}
    } 
unset($handle);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta aí

 

$files = array();
foreach($_FILES['foto'] as $key => $foto){
 foreach ($foto as $i => $v) {
 if (!array_key_exists($i, $files))
   $files[$i] = array();
   $files[$i][$key] = $v;
 }
}      


foreach ($files as $file) {
 
 	// Definimos as configurações desejadas da imagem maior
 	$handle = new Upload($file);
	if ($handle->uploaded){
		$handle->file_new_name_body   = $foto;
          	$handle->image_resize         = true;
		$handle->image_x              = 500;
        	$handle->image_ratio_x        = true;
		$handle->jpeg_quality         = 70;
		$handle->image_convert        = 'jpg';
		$handle->mime_check	      = true;
		$handle->Process('images/produtos/'.$url.'/');
		$foto = $handle->file_dst_name;
		
			if($handle->processed){
					true;
				}else{
					echo 'Erro ao enviar imagem: '.$handle->error;
				}

		// Aqui nos devifimos nossas configurações de imagem do thumbs
		$handle->file_new_name_body      = $foto;
                $handle->image_resize            = true;
                $handle->image_ratio_y           = false;
                $handle->image_x                 = 100;
		$handle->image_y       		 = 75;
                $handle->image_contrast          = 10;
		$handle->jpeg_quality            = 60;
		$handle->auto_create_dir         = true;
		$handle->file_safe_name          = true;
		$handle->Process('images/produtos/'.$url.'/thumbs/');
 
        if($handle->processed){
					true;
				}else{
					echo 'Erro ao enviar imagem: '.$handle->error;
				}
    } 
unset($handle);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

FUNCIONOU EM TERMOS...rsrsrs

 

Ele esta enviando o arquivo, mas não esta gerando o nome do arquivo.

Enviou assim:

 

 

 

.jpg

.jpg.jpg

.jpg.jpg.jpg

 

 

Foram 3 imagens de teste que postei.

 

 

 

 


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.

Antes no meu funcionava, mandava o nome, mas não mandava arquivo.

 

Agora manda arquivo, mas não manda o nome da foto... kkkkkkkkkk

 

 

O que você acha que esta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta linha é que atribui o nome

 

$handle->file_new_name_body   = $foto;

tenta trocar a $foto pela $v, senão for a $v precisa ver qual variável está carregando o nome do arquivo.

 

 

Isto não deu certo? tenta printar as variaveis do foreach só para saber qual delas está com o nome do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja:

 

 

 

Array ( [name] => Array ( [0] => PayPal 1.png [1] => PayPal 2.png [2] => PayPal 3.png [3] => [4] => ) [type] => Array ( [0] => image/png [1] => image/png [2] => image/png [3] => [4] => ) [tmp_name] => Array ( [0] => C:\wamp\tmp\php64CE.tmp [1] => C:\wamp\tmp\php64CF.tmp [2] => C:\wamp\tmp\php64D0.tmp [3] => [4] => ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 4 [4] => 4 ) => Array ( [0] => 65741 [1] => 471555 [2] => 61132 [3] => 0 [4] => 0 ) )



 

Array(    [name] => Array        (            [0] => PayPal 1.png            [1] => PayPal 2.png            [2] => PayPal 3.png            [3] =>             [4] =>         )    [type] => Array        (            [0] => image/png            [1] => image/png            [2] => image/png            [3] =>             [4] =>         )    [tmp_name] => Array        (            [0] => C:\wamp\tmp\phpDFB.tmp            [1] => C:\wamp\tmp\phpE0B.tmp            [2] => C:\wamp\tmp\phpE2C.tmp            [3] =>             [4] =>         )    [error] => Array        (            [0] => 0            [1] => 0            [2] => 0            [3] => 4            [4] => 4        )    [size] => Array        (            [0] => 65741            [1] => 471555            [2] => 61132            [3] => 0            [4] => 0        ))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu mudo para este:

 

foreach($_FILES['foto']['name'] as $key => $foto){

 

 

Não envia o arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara to vendo aqui algumas formas, não estou em casa aí fica meio dificil, se não der certo mais tarde dou uma olhada em uns aquivos que eu tenho em casa e tento resolver.

 

Ve se funciona:

 

$files = array();
foreach($_FILES['foto'] as $key => $foto){
 foreach ($foto['name'] as $i => $v) {
 if (!array_key_exists($i, $files))
   $files[$i] = array();
   $files[$i][$key] = $v;
 }
}      


foreach ($files as $file) {
 
 	// Definimos as configurações desejadas da imagem maior
 	$handle = new Upload($file);
	if ($handle->uploaded){
		$handle->file_new_name_body   = $foto;
          	$handle->image_resize         = true;
		$handle->image_x              = 500;
        	$handle->image_ratio_x        = true;
		$handle->jpeg_quality         = 70;
		$handle->image_convert        = 'jpg';
		$handle->mime_check	      = true;
		$handle->Process('images/produtos/'.$url.'/');
		$foto = $handle->file_dst_name;
		
			if($handle->processed){
					true;
				}else{
					echo 'Erro ao enviar imagem: '.$handle->error;
				}

		// Aqui nos devifimos nossas configurações de imagem do thumbs
		$handle->file_new_name_body      = $foto;
                $handle->image_resize            = true;
                $handle->image_ratio_y           = false;
                $handle->image_x                 = 100;
		$handle->image_y       		 = 75;
                $handle->image_contrast          = 10;
		$handle->jpeg_quality            = 60;
		$handle->auto_create_dir         = true;
		$handle->file_safe_name          = true;
		$handle->Process('images/produtos/'.$url.'/thumbs/');
 
        if($handle->processed){
					true;
				}else{
					echo 'Erro ao enviar imagem: '.$handle->error;
				}
    } 
unset($handle);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um conselho, usa o netbeans como editor que ele acusa todos os erros, é uma maravilha.

 

Depois vou dar uma olhada. Obrigado.

 

veja, teirei essa linha:

 

 

 

$handle->file_new_name_body = $foto;

 

E postou o arquivo com nome original do arquivo.

 

 

Agora para finalizar falta pegar o nome do arquivo e colocar no SQL.

 

Antes eu pagava assim:

 

 

$campo[ $key ] = $foto;

 

 

E colocava aqui:

 

 

 

GetSQLValueString($campo[0], "text"),
GetSQLValueString($campo[1], "text"),
GetSQLValueString($campo[2], "text"),
GetSQLValueString($campo[3], "text"),
GetSQLValueString($campo[4], "text"),

 

 

Só que agora não funciona.

 

 

gerar um nome sem ser o nome original do arquivo para não ter problema com caracteres especiais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o UPLOAD esta tudo certo.

 

Fiz como falou, mas não pegou o nome do arquivo.



Sim, o UPLOAD esta tudo certo.

 

Fiz como falou, mas não pegou o nome do arquivo.

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.