Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    come gestire upload multiplo di foto?

    allora, ho questo codice col quale gestisco l'upload di una foto singola.
    Però diventa palloso se devo inserire 10 foto, devo ripetere la stessa operazione 10 volte.

    Vorrei modificare questo codice per permettere in una sola volta di uploadare N foto (facciamo 3, per comodità)
    qualche consiglio? dritta? link?

    Magari dando una scelta all'utente di scegliere prima il numero di foto N da modificare, e a quel punto fargli vedere N form... (spero di essermi spiegato)

    codice:
    	// QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
    	// DI PHP PRECEDENTI ALLA 4.1.0
    	if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
    	if(!isset($_SERVER)) $_SERVER = $HTTP_SERVER_VARS;
    
    	/********************* VARIABILI DA SETTARE ********************/
    	// Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
    	$upload_dir = $_SERVER["DOCUMENT_ROOT"] . "/uploaded_images";
    	
    	$riferimento = $this->riferimento();
    
    	// Eventuale nuovo nome da dare al file uploadato
    	$new_name = $riferimento.'.jpg';
    
    	// Se $new_name è vuota, il nome sarà lo stesso del file uploadato
    	$file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];
    
    	if(trim($_FILES["upfile"]["name"]) == "")
    	{
    
    		die($this->nessun_file());
    
    	}
    
    	if (@is_uploaded_file($_FILES["upfile"]["tmp_name"]))
    	{
    
    		$allowed_types = array("image/gif","image/pjpeg","image/jpeg");
    		if(!in_array($_FILES["upfile"]["type"],$allowed_types))
    		{
    			
    			die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode(",", $allowed_types) . ".");
    		}
    
    		@move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name")
    		or die("Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");
    	}
    		else
    		{
    			die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);
    		}
    
    	echo "TUTTO OK";
    le parti in grassetto:
    $riferimento è un numero che pesco io dal db, è per nominare progressivamente le foto.
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    nell'html chiami i file in questo modo
    Codice PHP:
    <input type="file" name="upfile[0]" />
    <
    input type="file" name="upfile[1]" />
    <
    input type="file" name="upfile[2]" /> 
    e gli fai ripetere quel codice php per 3 volte con un ciclo tipo
    Codice PHP:
    for ($x=0$x<3$x++) 
    e ogni volta richiami il $_FILES come
    Codice PHP:
    $_FILES['upfile'][$x

  3. #3
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da pugia
    e gli fai ripetere quel codice php per 3 volte con un ciclo tipo
    Codice PHP:
    for ($x=0$x<3$x++) 
    e ogni volta richiami il $_FILES come
    Codice PHP:
    $_FILES['upfile'][$x
    a che punto metteresti esattamente queste due istruzioni?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  4. #4

    Re: come gestire upload multiplo di foto?

    Codice PHP:
        // QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
        // DI PHP PRECEDENTI ALLA 4.1.0
        
    if(!isset($_FILES)) $_FILES $HTTP_POST_FILES;
        if(!isset(
    $_SERVER)) $_SERVER $HTTP_SERVER_VARS;

        
    /********************* VARIABILI DA SETTARE ********************/
        // Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
        
    $upload_dir $_SERVER["DOCUMENT_ROOT"] . "/uploaded_images";
        
        
    $riferimento $this->riferimento();
            
        for (
    $x=0$x<3$x++) {

        
    // Eventuale nuovo nome da dare al file uploadato
        
    $new_name $riferimento."_$x.jpg";

        
    // Se $new_name è vuota, il nome sarà lo stesso del file uploadato
        
    $file_name = ($new_name) ? $new_name $_FILES["upfile"][$x]["name"];

        if(
    trim($_FILES["upfile"][$x]["name"]) == "")
        {

            die(
    $this->nessun_file());

        }

        if (@
    is_uploaded_file($_FILES["upfile"][$x]["tmp_name"]))
        {

            
    $allowed_types = array("image/gif","image/pjpeg","image/jpeg");
            if(!
    in_array($_FILES["upfile"][$x]["type"],$allowed_types))
            {
                
                die(
    "Il file non è di un tipo consentito, sono ammessi solo i seguenti: " implode(","$allowed_types) . ".");
            }

            @
    move_uploaded_file($_FILES["upfile"][$x]["tmp_name"], "$upload_dir/$file_name")
            or die(
    "Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");
        }
            else
            {
                die(
    "Problemi nell'upload del file " $_FILES["upfile"][$x]["name"]);
            }

        echo 
    "TUTTO OK";
        } 
    Non so cosa faccia quella variabile $riferimento, però in linea di massima io farei così

  5. #5
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    non funziona, mi da questo errore nel log:

    [Thu Jan 25 09:51:54 2007] [error] PHP Notice: Undefined offset: 0 in foto_php.php on line 69

    la riga 69 è questa:

    Codice PHP:
    if(trim($_FILES["upfile"][$x]["name"]) == ""
    di conseguenza, mi segnala l'errore come se non avessi selezionato file da uploadare.

    Codice PHP:
    die($this->nessun_file()); 
    nessun_file è una funziona che semplicemente stampa un messaggio di errore a video in quel caso.
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  6. #6
    prova a fargli fare un print_r($_FILES) all'inizio dello script per vedere com'è strutturato l'array

  7. #7
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    scusa,forse cosi è più leggibile

    Codice PHP:
    Array
    (
        [
    upfile] => Array
            (
                [
    name] => Array
                    (
                        [
    0] => immagine1.gif
                        
    [1] => immagine2.gif
                        
    [2] => immagine3.gif
                    
    )

                [
    type] => Array
                    (
                        [
    0] => image/gif
                        
    [1] => image/gif
                        
    [2] => image/gif
                    
    )

                [
    tmp_name] => Array
                    (
                        [
    0] => C:\WINDOWS\TEMP\php14C6.tmp
                        
    [1] => C:\WINDOWS\TEMP\php14C7.tmp
                        
    [2] => C:\WINDOWS\TEMP\php14C8.tmp
                    
    )

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

                [
    size] => Array
                    (
                        [
    0] => 3714
                        
    [1] => 3714
                        
    [2] => 3714
                    
    )

            )



    non capisco, è questo il controllo che non viene passato

    if(trim($_FILES["upfile"][$x]["name"]) == "")

    PHP Notice: Undefined offset: 0 in foto_php.php on line 71
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  8. #8
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    ho trovato il problema

    invece di

    Codice PHP:
    if(trim($_FILES["upfile"][$x]["name"]) == ""
    bisogna scrivere

    Codice PHP:
    if(trim($_FILES["upfile"]["name"][$x]) == ""
    cambiando l'ordine. Questo ovunque sia usato [$x].

    Inoltre, nel codice html dei form

    non importa che sia scritto cosi:
    codice:
    <input type="file" name="upfile[0]">
    <input type="file" name="upfile[1]">
    <input type="file" name="upfile[2]">
    ma funziona anche cosi:
    codice:
    <input type="file" name="upfile[]">
    <input type="file" name="upfile[]">
    <input type="file" name="upfile[]">

    Grazie, mi hai dato una grossa mano...

    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  9. #9
    Originariamente inviato da blekm
    ho trovato il problema

    invece di

    Codice PHP:
    if(trim($_FILES["upfile"][$x]["name"]) == ""
    bisogna scrivere

    Codice PHP:
    if(trim($_FILES["upfile"]["name"][$x]) == ""
    cambiando l'ordine. Questo ovunque sia usato [$x].

    Inoltre, nel codice html dei form

    non importa che sia scritto cosi:
    codice:
    <input type="file" name="upfile[0]">
    <input type="file" name="upfile[1]">
    <input type="file" name="upfile[2]">
    ma funziona anche cosi:
    codice:
    <input type="file" name="upfile[]">
    <input type="file" name="upfile[]">
    <input type="file" name="upfile[]">

    Grazie, mi hai dato una grossa mano...

    precisamente, non ti ho risposto subito perché ero uscito


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.