Risuscito un vecchio script di upload immagine multiplo

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti sopratutto a cricric,


Mi rivolgo sopratutto a lui perchè un po' di tempo fa mi corresse uno script cvhe ora sembra non funzionare più. Allora lo script in causa è l'upload immagini con selezione multipla ossia premendo ctrl+ tasto dx del mouse si possono selezionare più di una foto. Questo è lo script

upload.php

PHP:
<?php
require_once("connetti.php");

if(!isset($_POST['sub'])){
?>

<?php
}else{
	///inizializziamo il messaggio
	$messaggio = "&nbsp;";
	// estensioni ammesse
	$estensioni = array(".jpg", ".png", ".bmp", ".gif",".pdf");
	// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
	$dir = getcwd()."/img";
	// verifichiamo che sia stato premuto il submit
    //prelevo i dati del file
	$name = $_FILES['file']['name'];
	$tmp_name = $_FILES['file']['tmp_name'];
	//inizio una variabile per far funzionare il while che
	//servirà a far funzionare la visualizzazione di tutte le
	//immagini
	$i=0;
	//dobbiamo essere sicuri che  la variabile "i" raggiunga il 
	//numero dei file nell'array creato col form
	
	while($i<=count($name)-1)
	{
		//controlliamo in output quali file ha letto
		//spostiamo banalmente le immagini nelal directory
		if (in_array(substr(strtolower($name[$i]), -4), $estensioni)) {
			echo "fatto: ".$name[$i]." <br/>";
			move_uploaded_file($tmp_name[$i],$dir.'/'.$name[$i]);
			//inseriamo banalmente il tutto nella tabella del db
			mysql_query("INSERT INTO immagine(immagine) VALUES('".$name[$i]."')") or die ($messaggio = "Errore nell'upload del file.");
			
                        $messaggio = "Immagine/i caricata/e-";
                }
		 else {
			$messaggio = "Tipo immagine non consentito";                    
		}
		//visualizzo  le imamgini caricate:
		echo "<img src='".$dir.'/'.$name[$i]."' width='180px' height='180px'> ";
		$i++;
                
                
                }
	echo $messaggio;
}



?>

<form action='' method='POST' enctype='multipart/form-data'>
	<input type='file' name='file[]' multiple size ="60"/>
	<input type='submit'  name='sub' value='Carica'/>
</form>

Eseguendolo, sembra che memorizzi l'immagine, ma in realtà mi da questo messaggio qua:

fatto: l'imitabile paperinik.jpg
Errore nell'upload del file.

E alla fine se si va a vedere nel db non viene memorizzato niente. Mi puoi dare una mano a correggere o meglio a capire dove sta l'errore ??? Inoltre mi servirebbe anche una mano per ampliarlo. Ma intanto un passo alla volta. Spero in un vostro aiuto come al solito, grazie.
 
deve essere modificato!
non mi sono mai posto il problema della selezione multipla
non ne trovo l'utilita, ho sempre fatto caricare un immagine alla volta
a te serve davvero?
 
Ultima modifica:
Ciao

Ciao Cricric,

Si mi farebbe comodo a dire il vero e sopratutto senza limiti di mb. In quanto quando devo andare a prelevare le immagini da una cartella prese dallo scanner, farle una alla volta diventa un po' palloso (a mio avviso) :P Però anche quel codice che avevi postato tu un po' di tempo fa prima dell'estate, se si potesse modificare.... Io l'ho riprovato ma non ho capito cos'è successo si è sputtanato tutto.
 
Testato con WAMP su FF12, non ho idea dell'effetto su browser piu vecchi, sicuramente è da ottimizzare
PHP:
<?php
require_once("connetti.php");

///inizializziamo il messaggio
$messaggio = "&nbsp;";
// estensioni ammesse
$estensioni = array("jpg", "png", "bmp", "pdf");
// percosrso destinazione immagini la cartella deve esistere e il percorso deve essere corretto
$dir = getcwd() . "/img";
// verifichiamo che sia stato premuto il submit
if (isset($_POST['upload']) && $_POST['upload'] == "Carica immagine") {
    // recuperiamo e uniamo le informazionei sulle immagini
    $infoimages = array_combine($_FILES["image"]['name'], $_FILES["image"]['tmp_name']);
    // scorriamo l'array
    foreach ($infoimages as $k => $v) {
        // nome del file
        $nomefile = strtolower($k);
        // recuperiamo l'esensione
        $estensionefile = pathinfo($nomefile, PATHINFO_EXTENSION);
        // controlliamo il tipo immagine
        if (in_array(strtolower($estensionefile), $estensioni)) {
            // controllo caricamento
            if (is_uploaded_file($v)) {
                // spostiamo il file nella cartella immagini
                if (!move_uploaded_file($v, "$dir/$nomefile")) {
                    $messaggio = "Impossibile spostare il file";
                } else {
                    $messaggio = "Immagini/e caricata e memorizzata con successo";
                    $q_i = mysql_query("INSERT INTO immagine(immagine) VALUES('$nomefile')");
                }
            } else {
                $messaggio = "Errore nell'upload del file.";
            }
        } else {
            $messaggio = "Tipo immagine non consentito";
        }
    }
}
?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Carica immagini</title>
        <style>
            .thumb {
                width:96px;
                height:96px;
                margin:0 5px;
            }
        </style>
    </head>
    <body>
        <form enctype='multipart/form-data' method='post' action='<?php echo $_SERVER['PHP_SELF'] ?>'>
            <p><?php echo $messaggio ?></p>
            <p>Selezione una o piu immagini: </p>
            <!-- Campo file di nome "image" -->
            <p><input name="image[]" type="file" size="40" multiple="multiple"/></p>            
            <!-- Pulsante -->
            <p><input name="upload" type="submit" value="Carica immagine" /></p>
        </form>
        <p>Immagini caricate</p>
        <?php
        // indico il percorso della cartella
        $d = dir(getcwd() . "/img");
        //ciclo il contenuto
        while ($entry = $d->read()) {
            if ($entry != "." && $entry != "..") {
                // se non è un altra cartella
                if (!is_dir("img/" . $entry)) {
                    // mostro l'immagine
                    echo "<img class='thumb' src='img/" . $entry . "' alt='img'/>";
                }
            }
        }
        $d->close();
        ?> 
    </body>
</html>
Paperinik4 ha scritto:
Io l'ho riprovato ma non ho capito cos'è successo si è sputtanato tutto.
a forza di togliere parti di codice non ti stava rimanendo piu niente

ps:
i limiti di peso dipendono dalle impostazioni del server e dal buon senso
 
Ultima modifica:
Ciao

Ciao,

Quindi ora dovrebbe funzionare ??? Che intendi dal buon senso ???? Considerando che le immagini vengono caricati dai cellulari, scanner e macchinette digitali.... Perdonami, mi spieghi cos'è FF12 ??? E' un caccia bombardiere che abbiamo comprato di recente 90mila€ ?????
 
Ciao

Ciao,

Ho riprovato il tuo codice. A funzionare sembra che funzioni. ma poi vado a vedere i db e risulta vuoto, e l'immagine non viene caricata nella thumb. ti mostro le immagini sia del db e sia di quello ch emi compare a schermo. Aspetto tuoi pareri. Le cartelle sono giuste :P
 
Ciao

Salve a tutti,

Ciao cricric,

Ora pare che dopo le dovute modifche fatte al codice funzioni. Mi lascia perplesso una cosa. Quando seleziono una sola immagine, questa immagine non viene memorizzata nel db e tanto meno me la fa vedere. Visto e considerato che uno potrebbe solo avere la necessità di memorizzare un'immagine, comemai fi fa ciò ??? Invece se memorizzo più di una, le fa vedere tutte quante, se c'è il doppione non lo agginge ma al limite aggiunge l'immagine nuova, però la prima immagine selezionata singola non la fa vedere. Ti mando l'immagine di quello che succede così se mi sono spiegato mala puoi capire meglio e forse darmi una spiegazione. Grazie.
 

Discussioni simili