Inserimento multiplo immagini

Snow4e

Nuovo Utente
30 Apr 2016
13
1
3
Buongiorno ragazzi,
Vorrei inserire nel mio sito la possibilità di fare un upload per una gallery.(ovviamente multiplo)
Son riuscito con l'upload singolo ma mi serve un upload multiplo
dato questo codice :
HTML:
<div style="margin:1em auto; width:333px; text-align:center;">
 <form action="<?php echo $_SERVER['main.php?page=utente=']; ?>" method="POST" enctype="multipart/form-data" > 
  Upload File: <input type="file" name="fileup" /><br/>
  <input type="submit" name='submit' value="Upload" />
  <input type="hidden"
              value="<?php echo query_filter('get',$_REQUEST['pg']); ?>"
			  name="pg" /> 
 </form>

</div>
PHP:
<?php
$nome=($_SESSION['login']);

$uploadpath = 'pages/gallery/';      // directory to store the uploaded files
$max_size = 8000;          // maximum file size, in KiloBytes
$alwidth = 1500;            // maximum allowed width, in pixels
$alheight = 1500;           // maximum allowed height, in pixels
$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png');        // allowed extensions

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
  $uploadpath = $uploadpath."galleria_".$nome;       // gets the file name
  $sepext = explode('.', strtolower($_FILES['fileup']['name']));
  $type = end($sepext);       // gets extension
  list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);     // gets image width and height
  $err = '';         // to store the errors

  // Checks if the file has allowed type, size, width and height (for images)
  if(!in_array($type, $allowtype)) $err .= 'Questo file: <b>'. $_FILES['fileup']['name']. '</b> non ha un estensione conforme al sistema .';
  if($_FILES['fileup']['size'] > $max_size*8000) $err .= '<br/>Immagine troppo pesante: '. $max_size. ' KB.';
  if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>La grandezza massima per immagine è di: '. $alwidth. ' x '. $alheight;

  // If no errors, upload the image, else, output the errors
  if($err == '') {
   
    if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) { 
      
	  
      echo 'Upload  effetuato con successo!';
      if(isset($width) && isset($height)) 
	  
	 
	   $a=('http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['REQUEST_URI']), '\\/').'/'.$uploadpath.'');
	milldigital_query("UPDATE utente SET url_img='".$a."' WHERE utente = '".$_SESSION['login']."'");

		
	


     
	
    }
    else echo '<b>Unable to upload the file.</b>';
  }
  else echo $err;
}
?>
Come effettuereste l'upload multiplo ?
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Non ho mai provato, ma credo che potresti aggiungere n campi (fileup1, fileup2...) al form, poi fare un ciclo foreach nel motore dell'upload che ripete i controlli e le operazioni di upload per ogni file presente.
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Inoltre, tanto per dire, potresti controllare più velocemente le estensioni di file con pathinfo(), ad esempio:

PHP:
$alloewd = array('png','bmp','gif','gif','jpeg','jpg');

$ext = pathinfo($_FILES['fileup']['name'], PATHINFO_EXTENSION);

if(in_array($ext, $allowed)) echo "OK";
else "Tipo non consentito";
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
vediamo un po', il form credo dovrebbe essere tipo:
HTML:
<!-- altro codice -->
<form action="motore.upload.php" method="POST" enctype="multipart/form-data" >
  <input type="hidden" name="MAX_FILE_SIZE" value="2100000" /> 
  Upload File 1: <input type="file" name="fileup1" /><br/>
  Upload File 2: <input type="file" name="fileup2" /><br/>
  Upload File 3: <input type="file" name="fileup3" /><br/>
  <input type="submit" name='submit' value="Upload" />
  <input type="hidden" value="<?php echo query_filter('get',$_REQUEST['pg']); ?>" name="pg" /> 
</form>
<!-- altro codice -->


mentre nella pagina che riceve i dati io farei:
PHP:
// tralascio le tue variabili per i controlli
//
// potresti creare una funzione per il controllo del file
function controllo_fileup($file){
    // qui effettui tutti i controlli di formato o altro...
    // la dimensione la controlli subito grazie al campo hidden del form MAX_FILE_SIZE
    // facendo tornare un valore bool true se va tutto bene
}

if(isset($_FILES['fileup1'] && $_FILES['fileup1']['name'] > 1 && $_FILES['fileup1']['error'] == 0){
    if(controllo_fileup($_FILES['fileup1']['tmp_name'])){
        move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
    }
}

if(isset($_FILES['fileup2'] && $_FILES['fileup2']['name'] > 1 && $_FILES['fileup2']['error'] == 0){
    if(controllo_fileup($_FILES['fileup2']['tmp_name'])){
        move_uploaded_file($_FILES['fileup2']['tmp_name'], $uploadpath);
    }
}


if(isset($_FILES['fileup3'] && $_FILES['fileup3']['name'] > 1 && $_FILES['fileup3']['error'] == 0){
    if(controllo_fileup($_FILES['fileup3']['tmp_name'])){
        move_uploaded_file($_FILES['fileup3']['tmp_name'], $uploadpath);
    }
}

Sicuramente ragionandoci un po' si può risparmiare righe di codice, adesso ho scritto la prima cosa che mi è venuta in mente, magari appena ho un po' di tempo ci provo...
 
Ultima modifica:

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Potresti provare se la funzione controlla_fileup() funziona così:
PHP:
function controllo_fileup($fileup)
{
	// passare come parametro $_FILES['fileup1']

	// estensioni consentite
	$allowed = array('image/png','image/jpg','image/jpeg','image/pjpeg');

	if(!in_array($fileup['type'], $allowed)) die("ERRORE tipo file non ammesso!!!");

	if($fileup['error'] == 2) die("ERRORE, dimensioni eccessive");

	// e così via per tutti i controlli che vuoi oppure un controllo generico sugli errori
	if($fileup['error'] != 0) die("ERRORE generico ( ".$fileup['error'].")");
	
	return true;
}

Fammi sapere!
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Tre è per fare un esempio, potresti metterne quante vuoi, anche se secondo me è meglio limitare, altrimenti diventa pesante lo script
 

Snow4e

Nuovo Utente
30 Apr 2016
13
1
3
Quindi così:
HTML:
<!-- altro codice -->
<form action="motore.upload.php" method="POST" enctype="multipart/form-data" >
  <input type="hidden" name="MAX_FILE_SIZE" value="2100000" /> 
  Upload File 1: <input type="file" name="fileup1" /><br/>
  Upload File 2: <input type="file" name="fileup2" /><br/>
  Upload File 3: <input type="file" name="fileup3" /><br/>
  <input type="submit" name='submit' value="Upload" />
  <input type="hidden" value="<?php echo query_filter('get',$_REQUEST['pg']); ?>" name="pg" /> 
</form>
<!-- altro codice -->

PHP:
function controllo_fileup($fileup) 
{ 
    // passare come parametro $_FILES['fileup1'] 

    // estensioni consentite 
    $allowed = array('image/png','image/jpg','image/jpeg','image/pjpeg'); 

    if(!in_array($fileup['type'], $allowed)) die("ERRORE tipo file non ammesso!!!"); 

    if($fileup['error'] == 2) die("ERRORE, dimensioni eccessive"); 

    // e così via per tutti i controlli che vuoi oppure un controllo generico sugli errori 
    if($fileup['error'] != 0) die("ERRORE generico ( ".$fileup['error'].")"); 
     
    return true; 
}  

if(isset($_FILES['fileup1'] && $_FILES['fileup1']['name'] > 1 && $_FILES['fileup1']['error'] == 0){
    if(controllo_fileup($_FILES['fileup1']['tmp_name'])){
        move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
    }
}

if(isset($_FILES['fileup2'] && $_FILES['fileup2']['name'] > 1 && $_FILES['fileup2']['error'] == 0){
    if(controllo_fileup($_FILES['fileup2']['tmp_name'])){
        move_uploaded_file($_FILES['fileup2']['tmp_name'], $uploadpath);
    }
}


if(isset($_FILES['fileup3'] && $_FILES['fileup3']['name'] > 1 && $_FILES['fileup3']['error'] == 0){
    if(controllo_fileup($_FILES['fileup3']['tmp_name'])){
        move_uploaded_file($_FILES['fileup3']['tmp_name'], $uploadpath);
    }
}

Però se fosse che l'immagine avesse lo stesso nome ? non sarebbe giusto assegnarli un valore o una lettera a caso tipo nomefile_a1.jpg?
Adesso inizio a vedere se funziona così anche perchè devo aggiungere che crea una cartella col nome dell'utente in modo tale da aver ogni utente la propria galleria
___

Post Prova:
Errore a tutti e tre le righe
PHP:
if(isset($_FILES['fileup3'] && $_FILES['fileup3']['name'] > 1 && $_FILES['fileup3']['error'] == 0){
 
Ultima modifica:

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
certamente..... manca una parentesi!!!

PHP:
if(isset($_FILES['fileup3']) && $_FILES['fileup3']['name'] > 1 && $_FILES['fileup3']['error'] == 0)

poi certamente poi implementare il tuo codice come vuoi, modificando il nome, cambiando la path di destinazione in base al tipo di file, quello che vuoi
 
Ultima modifica:

Snow4e

Nuovo Utente
30 Apr 2016
13
1
3
Ho provato così non mi sposta il file. ho provato anche a inserire manualmente il nome utente(nel uploadpath) ma niente. crea la cartella come gli dico ma poi non mi sposta il file :0
HTML:
<form action="<?php echo $_SERVER['main.php?page=galleria&pg=']; ?>" method="POST" enctype="multipart/form-data" >
  <input type="hidden" name="MAX_FILE_SIZE" value="2100000" /> 
  Upload File 1: <input type="file" name="fileup1" /><br/>
  Upload File 2: <input type="file" name="fileup2" /><br/>
  Upload File 3: <input type="file" name="fileup3" /><br/>
  <input type="submit" name='submit' value="Upload" />
  <input type="hidden" value="<?php echo query_filter('get',$_REQUEST['pg']); ?>" name="pg" /> 
</form>
PHP:
<?php 
$nome=($_SESSION['login']); 
$carte=mkdir("pages/gallery/$nome/", 0777);
$uploadpath = 'pages/gallery/';      // directory to store the uploaded files 
function controllo_fileup($fileup) 
{ 
    // passare come parametro $_FILES['fileup1'] 

    // estensioni consentite 
    $allowed = array('image/png','image/jpg','image/jpeg','image/pjpeg'); 

    if(!in_array($fileup['type'], $allowed)) die("ERRORE tipo file non ammesso!!!"); 

    if($fileup['error'] == 2) die("ERRORE, dimensioni eccessive"); 

    // e così via per tutti i controlli che vuoi oppure un controllo generico sugli errori 
    if($fileup['error'] != 0) die("ERRORE generico ( ".$fileup['error'].")"); 
     
    return true; 
}  

if(isset($_FILES['fileup1'])  && $_FILES['fileup1']['name'] > 1 && $_FILES['fileup1']['error'] == 0){
    if(controllo_fileup($_FILES['fileup1']['tmp_name'])){
        move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
    }
}

if(isset($_FILES['fileup2']) && $_FILES['fileup2']['name'] > 1 && $_FILES['fileup2']['error'] == 0){
    if(controllo_fileup($_FILES['fileup2']['tmp_name'])){
        move_uploaded_file($_FILES['fileup2']['tmp_name'], $uploadpath);
    }
}


if(isset($_FILES['fileup3']) && $_FILES['fileup3']['name'] > 1 && $_FILES['fileup3']['error'] == 0){
    if(controllo_fileup($_FILES['fileup3']['tmp_name'])){
        move_uploaded_file($_FILES['fileup3']['tmp_name'], $uploadpath);
    }
}  
?>
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
per vedere se ti da un errore prova a correggere la riga che sposta il file in
PHP:
move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath) or die("impossibile spostare ".$_FILES['fileup1']['tmp_name']." in ".$uploadpath." !!");
e vediamo che ti dice
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
anzi, forse meglio ancora prova così

PHP:
try
{
  move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
  echo "file ".$_FILES['fileup1']['tmp_name']." correttamente spostato in "$uploadpath." !";
}
catch(Exception $e){
  echo "impossibile spostare ".$_FILES['fileup1']['tmp_name']." in "$uploadpath." !<br>".
        $e->getMessage();
  exit();
}
 

Snow4e

Nuovo Utente
30 Apr 2016
13
1
3
anzi, forse meglio ancora prova così

PHP:
try
{
  move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
  echo "file ".$_FILES['fileup1']['tmp_name']." correttamente spostato in "$uploadpath." !";
}
catch(Exception $e){
  echo "impossibile spostare ".$_FILES['fileup1']['tmp_name']." in "$uploadpath." !<br>".
        $e->getMessage();
  exit();
}

nessun errore :crying::dipser:
Non capisco perchè
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
ho notato nel tuo codice che crei una cartella $carte (pages/gallery/utente/) con il nome utente, praticamente dentro il percorso di $uploadpath (pages/gallery/), ma poi le immagini le carichi in $uploadpath (pages/gallery/) e non nella cartella utente, si sicuro di controllare la cartella corretta dopo l'esecuzione dello script?

poi un'altra cosa, i test li stai facendo in locale con sw tipo XAMPP o MAMP, oppure in un sito vero?
tempo fa, proprio nell'upload immagini, in locale anche ioavevo problemi e non capivo il perchè, caricato lo script sul sito funzionava...
 

Snow4e

Nuovo Utente
30 Apr 2016
13
1
3
allora no lo testo su sito vero.
Li era la seconda prova dove inserivo io manualmente la cartella ma nella prima era :
PHP:
$nome=($_SESSION['login']); 
$carte=mkdir("pages/gallery/$nome/", 0777);
$uploadpath = 'pages/gallery/$carte/';      // directory to store the uploaded files
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Scusa ma c'era un errore, mancava un punto prima di $uploadpath

PHP:
try
{
  move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
  echo "file ".$_FILES['fileup1']['tmp_name']." correttamente spostato in ".$uploadpath." !";
}
catch(Exception $e){
  echo "impossibile spostare ".$_FILES['fileup1']['tmp_name']." in ".$uploadpath." !<br>".
        $e->getMessage();
  exit();
}
 

Snow4e

Nuovo Utente
30 Apr 2016
13
1
3
Scusa ma c'era un errore, mancava un punto prima di $uploadpath

PHP:
try
{
  move_uploaded_file($_FILES['fileup1']['tmp_name'], $uploadpath);
  echo "file ".$_FILES['fileup1']['tmp_name']." correttamente spostato in ".$uploadpath." !";
}
catch(Exception $e){
  echo "impossibile spostare ".$_FILES['fileup1']['tmp_name']." in ".$uploadpath." !<br>".
        $e->getMessage();
  exit();
}
L'avevo già corretto.
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
allora no lo testo su sito vero.
Li era la seconda prova dove inserivo io manualmente la cartella ma nella prima era :
PHP:
$nome=($_SESSION['login']); 
$carte=mkdir("pages/gallery/$nome/", 0777);
$uploadpath = 'pages/gallery/$carte/';      // directory to store the uploaded files

secondo me così però non è corretto, prova con
PHP:
$uploadpath = 'pages/gallery/$nome/';
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Inserimento multiplo non richiesto PHP 2
gandalf1959 [MySQL] Inserimento multiplo da form multirighe MySQL 22
A form con inserimento multiplo PHP 4
G Inserimento multiplo Classic ASP 7
P Problemi inserimento dati con checkbox multiplo PHP 17
M Inserimento multiplo di valori nei rispettivi record sql PHP 5
Trapano Inserimento multiplo PHP 26
P Query Mysql per inserimento multiplo MySQL 4
B Rotazione banner temporizzati - inserimento multiplo nella stessa pagina html Javascript 7
L Inserimento multiplo di 2 o piu record Classic ASP 5
K Inserimento query Errore 1366 PHP 4
K form Inserimento record mysql PHP 2
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
C inserimento gestionale sotto Word Press WordPress 0
D Inserimento video mp4 HTML e CSS 0
L inserimento form dati multipli ? PHP 0
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
J Form inserimento dati in database Ajax 1
D modificare questo codice per inserimento in text e non in tabella jQuery 1
R [C#] Automatizzare un inserimento di un Post su un Gruppo Facebook .NET Framework 0
M Aiuto con inserimento immagini WordPress 6
elpirata Impedire inserimento data di oggi e date passate jQuery 39
A Inserimento dati nel database tramite form + altre operazioni PHP 18
W Email conferma inserimento Classic ASP 0
P inserimento icone social tramite html HTML e CSS 1
L form multipla php sql,errore in inserimento MySQL 0
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
M Problema inserimento parole con apostrofo nel db PHP 5
C [RISOLTO]Inserimento variabile php in input html PHP 20
P Access Inserimento data. MS Access 4
L Inserimento dettagli in una maglia Photoshop 2
S [PHP] email con inserimento dati nel database PHP 23
beatle [Photoshop] problema inserimento immagini Photoshop 1
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
C [PHP] Form inserimento più menù a discesa PHP 9
M [PHP] Problemi su inserimento array nel db PHP 7
gandalf1959 [PHP] Inserimento di più righe non funziona come mi aspetto... PHP 2
E Inserimento dati da PHP in tabella MySQL PHP 5
E Form inserimento dati con JavaScript Javascript 0
D [MS Access] problemi con inserimento campo in una maschera MS Access 6
G inserimento csv in tabella mysql; problema con struttura PHP 11
M [Joomla] Inserimento wow.js in template Joomla 4
K [PHP] Inserimento dati database con postgres PHP 2
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
A [PHP] Inserimento url dinamici in pagina html PHP 3
spider81man [PHP] Alert Box per confermare Inserimento o Cancellazione dato. PHP 4
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15

Discussioni simili