Ir para conteúdo

Arquivado

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

Guilherme Henrique_183983

Como fazer upload de varias Imagens por um campo input

Recommended Posts

ola pessoal estou com uma duvida de como fazer upload de multiplas imgs por apenas 1 campo input file, n consigo de jeito nenhum. O meu codigo esta funcionando tudo blz

 

formulario:

<form name="upimg" method="post" enctype="multipart/form-data" action="up_new_event.php">
<input type="text" name="nome" placeholder="Nome do Evento" id="textevent" required="required" />
<input type="text" name="data" placeholder="Data do evento (DD/MM/AAAA)" id="textevent" required="required" />
<input type="text" name="localizacao" placeholder="Localizacao" id="textevent" required="required" />
<br /><br /><br />
<input type="file" name="a" id="idfile"/> Imagem de Capa do album tamanho Largura: 225px Altura: 85px<br /><br />
<input type="file" name="b" id="idfile"/>
<input type="file" name="c" id="idfile"/>
<input type="file" name="d" id="idfile"/>
<input type="file" name="e" id="idfile"/>
<input type="file" name="f" id="idfile"/>
<input type="file" name="g" id="idfile"/>
<input type="file" name="h" id="idfile"/>
<input type="file" name="i" id="idfile"/>
<input type="file" name="j" id="idfile"/>
<input type="file" name="k" id="idfile"/>
<input type="file" name="l" id="idfile"/>
<input type="file" name="m" id="idfile"/>
<input type="file" name="n" id="idfile"/>
<input type="file" name="o" id="idfile"/>
<input type="file" name="p" id="idfile"/>
<input type="file" name="q" id="idfile"/>
<input type="file" name="r" id="idfile"/>
<input type="file" name="s" id="idfile"/>
<input type="file" name="t" id="idfile"/>
<br /><br />
<center><input type="submit" class="botao" value="Enviar Evento >" /></center>
</form>
a action:
require("image/MarcaAgua.class.php");
$nome=$_POST['nome'];
$data=$_POST['data'];
$localizacao=$_POST['localizacao'];
$fields = array();
$arquivo = new FotoMarca();
foreach ($_FILES as $key => $value) {
if($value ["name"]!=""){
$arquivo->set("Imagem",$value ["tmp_name"]);
$arquivo->set("Diretorio","imgsevents/");
$arquivo->set("Altura",500);
$arquivo->set("Largura",500);
$arquivo->set('Nome',"");
$arquivo->Dimensionar();
$fields[] = "'".$arquivo->get('Nome')."'";
}else{
$fields[] = "''";
}
}
if(!empty($fields)){
$sql= mysql_query("INSERT INTO evento (nome, data, localizacao, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) VALUES ('$nome', '$data', '$localizacao', ".implode(",",$fields).")");
}
por favor conto a ajuda de vcs vlww

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

da esse erro:

PHP Notice:  Array to string conversion in E:\home\f3fotograf2\Web\image\Imagem.class.php on line 7PHP Warning:  getimagesize(Array) [<a href='function.getimagesize'>function.getimagesize</a>]: failed to open stream: No such file or directory in E:\home\f3fotograf2\Web\image\Imagem.class.php on line 7PHP Notice:  Undefined index:   in E:\home\f3fotograf2\Web\image\Imagem.class.php on line 11PHP Notice:  Array to string conversion in E:\home\f3fotograf2\Web\image\Imagem.class.php on line 12PHP Warning:  filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for Array in E:\home\f3fotograf2\Web\image\Imagem.class.php on line 12PHP Fatal error:  Imagem inválida in E:\home\f3fotograf2\Web\FotoMarca.class.php on line 59

 

Imagem.class.php(arquivo inteiro):
<?php
abstract class Imagem{
protected $Imagem=array('Src'=>'','Altura'=>'','Largura'=>'','Tipo'=>'','Tamanho'=>'','LarguraNova'=>'','AlturaNova'=>'');
protected $Tipos=array(1=>'gif',2=>'jpg',3=>'png',4=>'swf',5=>'psd',6=>'bmp',7=>'tiffi',8=>'tiffm',9=>'jpc',10=>'jp2',11=>'jpx',12=>'jb2',13=>'swc',14=>'iff',15=>'wbmp',16=>'xbm');
public function __construct($img){
list($largura,$altura,$tipo) = getimagesize($img);
$this->Src=$img;
$this->Altura=$altura;
$this->Largura=$largura;
$this->Tipo=$this->Tipos[$tipo];
$this->Tamanho=round(filesize($img)/1024);
}
public function __set($p,$v){
if(isset($this->Imagem[$p])){
$this->Imagem[$p]=$v;
}
}
public function __get($p){
if(isset($this->Imagem[$p])){
return $this->Imagem[$p];
}
}
public function __destruct(){
$this->Imagem;
$this->Tipos;
}
abstract public function Dimensao($A,$L);
}
?>
FotoMarca.class.php:
switch(strtoupper($this->Foto->Tipo)){
case 'JPG':
$this->DimensionarJpg();
break;
case 'GIF':
$this->DimensionarGif();
break;
case 'PNG':
$this->DimensionarPng();
break;
default:
trigger_error("Imagem inválida", E_USER_ERROR); <-Seria essa a linha 59
break;
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que iterar o array que virá estruturado desta forma

array (size=1)
  'myfiles' => 
    array (size=5)
      'name' => 
        array (size=3)
          0 => string 'chrome_100_percent.pak' (length=22)
          1 => string 'chrome_frame_helper.dll' (length=23)
          2 => string 'chrome_frame_helper.exe' (length=23)
      'type' => 
        array (size=3)
          0 => string 'application/octet-stream' (length=24)
          1 => string 'application/x-msdownload' (length=24)
          2 => string 'application/x-msdownload' (length=24)
      'tmp_name' => 
        array (size=3)
          0 => string 'C:\wamp\tmp\phpF033.tmp' (length=23)
          1 => string 'C:\wamp\tmp\phpF063.tmp' (length=23)
          2 => string 'C:\wamp\tmp\phpF064.tmp' (length=23)
      'error' => 
        array (size=3)
          0 => int 0
          1 => int 0
          2 => int 0
      'size' => 
        array (size=3)
          0 => int 902827
          1 => int 57296
          2 => int 82896

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que percorrer o array para obter as informações dos arquivos upados.

 

Pode ser um desses:

EDIT:

$myfiles = $_FILES[ 'myfiles' ];

for( $i = 0; $i < count( $myfiles[ 'name' ] ); $i++ )
{
    $files[ ] = array(
         'name'     => $myfiles[ 'name' ] [ $i ],
         'type'     => $myfiles[ 'type' ] [ $i ],
         'tmp_name' => $myfiles[ 'tmp_name' ] [ $i ],
         'error'    => $myfiles[ 'error' ] [ $i ],
         'size'     => $myfiles[ 'size' ] [ $i ]
     );
}

var_dump( $files );

Saída

array (size=3)
  0 => 
    array (size=5)
      'name' => string 'chrome_100_percent.pak' (length=22)
      'type' => string 'application/octet-stream' (length=24)
      'tmp_name' => string 'C:\wamp\tmp\php4A94.tmp' (length=23)
      'error' => int 0
      'size' => int 902827
  1 => 
    array (size=5)
      'name' => string 'chrome_frame_helper.dll' (length=23)
      'type' => string 'application/x-msdownload' (length=24)
      'tmp_name' => string 'C:\wamp\tmp\php4AB4.tmp' (length=23)
      'error' => int 0
      'size' => int 57296
  2 => 
    array (size=5)
      'name' => string 'chrome_frame_helper.exe' (length=23)
      'type' => string 'application/x-msdownload' (length=24)
      'tmp_name' => string 'C:\wamp\tmp\php4AC5.tmp' (length=23)
      'error' => int 0
      'size' => int 82896

Agora sim vc pode utilizar o foreach

 

Ou acessar diretamente no for os dados de cada arquivo enviado

$myfiles = $_FILES[ 'myfiles' ];

for( $i = 0; $i < count( $myfiles[ 'name' ] ); $i++ )
{
    $myfiles[ 'name' ] [ $i ];
    $myfiles[ 'type' ] [ $i ];
    $myfiles[ 'tmp_name' ] [ $i ];
    $myfiles[ 'error' ] [ $i ];
    $myfiles[ 'size' ] [ $i ];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, no codigo para fazer o up ja tem olha:

foreach ($_FILES as $key => $value) {
if($value ["name"]!=""){
$arquivo->set("Imagem",$value ["tmp_name"]);
$arquivo->set("Diretorio","imgsevents/");
$arquivo->set("Altura",500);
$arquivo->set("Largura",500);
$arquivo->set('Nome',"");
$arquivo->Dimensionar();
$fields[] = "'".$arquivo->get('Nome')."'";
}else{
$fields[] = "''";
}
}

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.