Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [freephp] Upload multiplo di immagini

    Ciao a tutti, mi sono appena iscritto a questo forum, anche se è qualche

    tempo che utilizzo le risorse di html.it, per chiedere un aiuto.
    Fino a poco tempo fa non ho avuto necessità di usare codice al di fuori di

    html e in modo base, cioè creando pagine semplici per un sito informativo

    di una squadra sportiva.
    Purtroppo sono soppraggiunti impegni e quindi non riesco a gestirlo

    completamente e quindi ho aggiunto 2 pagine: una per la gestione delle news

    e uno per le foto (due script presi da html.it).
    Quello per le news, una volta sistemati alcuni particolari per ora funziona

    benissimo.
    Quello per le immagini pure, però mi è stato chiesto di implementarlo per

    aggiungere più immagini allo stesso tempo. Ora mi spiego meglio.
    Una volta scaricato e sistemate alcune cose elemntari l'ho caricato sul

    server e la struttura è la seguente:
    ---cartella_principale---
    sottocartella di nome "big"
    sottocartella di nome "img"
    sottocartella di nome "mod"
    sottocartella di nome "tmb"
    file di nome "index.php"
    file di nome "gallery.js"
    file di nome "photogallery.php"
    file di nome "body.css"
    file di nome "gallery.css"

    poi nella sotto cartella mod sono presenti i seguenti file:
    file di nome "index.php"
    file di nome "config.php"
    file di nome "rinomina.php"
    file di nome "aggiungi.php"
    file di nome "elimina.php"
    file di nome "ordina.php"

    Praticamente è una photogallery molto semplice, ma più che funzionale per

    le mie necessità.
    Al caricamento di ogni immagine viene fatto un controllo per vedere

    l'estensione, viene salvata tre volte in tre dimensioni diverse che servono

    una per le thumbnails, una per l'anteprima e una a dimensioni maggiori da

    visualizzare cliccando sull'anteprima. Poi sempre dalla pagina di gestione

    è possibile rinomenarle, cambiare ordine ed eliminarle.
    Ora il mio problema:
    devo sistemare il codice in modo che sia possibile aggiungere più immagini

    per volta per sveltire la procedura di caricamento.
    Posto le pagine dentro la cartella "mod" che da quello che ho capito sono

    le pagine per il caricamento delle immagini (non mi ricordo il nome dello

    script, se no avrei postato il link per poterlo scaricare):

    ---index.php---

    <?
    require 'config.php';

    if ($handle = opendir($f_thumb)) {
    $array = array();
    while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != ".." && $file !="Thumbs.db") {
    $array[] = $file;
    }
    }
    closedir($handle);
    }
    usort($array, "strnatcmp");

    $id = (101 + count($array));
    ?>
    <html>
    <head>
    <style>
    body{font-family:verdana;font-size:12px; text-align:center}
    table{font-family:verdana;font-size:12px; margin-right:auto; margin-

    left:auto;}
    h1{font-family:verdana;font-size:20px;font-weight:bold}
    </style>
    <title>Modifica la Galleria</title>
    </head>
    <body>
    <h1>aggiungi immagine</h1>


    Torna alla Galleria</p>
    <form action="aggiungi.php" method="post" enctype="multipart/form-data">
    <table border="1" cellpadding="10" align="center">
    <tr>
    <td>Immagine: </td>
    <td align="right"><input name="id" type="hidden" value="<? echo "$id"

    ?>">
    <input type="file" name="img" size="20"></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" name="submit"

    value="Aggiungi"></td>
    </tr>
    </table>
    </form>
    <table border="1" cellpadding="10" width="400px" align="center">
    <tr>
    <td>thumb</td>
    <td colspan="2">ordine</td>
    <td>nome</td>
    <td>azione</td>
    </tr>
    <form action="rinomina.php" method="post">
    <?php
    $x = 0;
    while ($x < (count($array))) {
    ?>
    <tr>
    <td>[img]<? echo $f_thumb. $array[$x] ?> [/img]</td>
    <td><input name="id<? echo ("$x") ?>" type="text" value="<? echo $x+1

    ?>" size="1"></td>
    <td><? if ($x != 0) {
    echo '+
    ';
    }
    if ($x < (count($array)-1)) {
    echo '-';
    }
    ?></td>
    <td><input name="nome<? echo ("$x") ?>" type="text" value="<? echo

    (substr(rtrim ($array[$x], ".jpg.gif.png.jpeg.JPG"),4)) ?>" size="30">
    <input type="submit" value="rinomina" ></td>
    <td><a href="elimina.php?elimina=<? echo $array[$x] ?

    >">Elimina</a></td>
    </tr>
    <? $x++;
    }
    ?></form>
    </table>
    </body>
    </html>

    ---config.php---

    <?
    # ATTENZIONE: le cartelle dovranno avere gli opportuni permessi di

    scrittura.

    $f_photo = "../big/"; # path dove lo script creerà l’immagine grande.
    $f_thumb = "../tmb/"; # path dove lo script creerà l’immagine per le thumb.
    $f_slide = "../img/"; # path dove lo script creerà l’immagine per lo slide

    show.

    $wphoto = 720; # assegnare la larghezza del layout che contiene thumbnails

    e slideshow.

    $hbig = 2000; # assegnare l'altezza massima delle immagini grandi.
    $wbig = 2000; # assegnare la larghezza massima delle immagini grandi.

    $hslide = 300; # assegnare l'altezza standard delle immagini dello slide

    show.
    $hthumb = 50; # assegnare l'altezza standard delle thumbnails.
    $spthumb = 3; # assegnare lo spazio tra una thumb e l'altra.

    $interv = 150; # intervallo di tempo per la durata delle slide (escluso

    l'intervallo della dissolvenza incrociata).
    $crossx = 30; # intervallo di tempo per la durata della dissolvenza

    incrociata.

    $keygallery ="Photogallery"; # parola chiave che compare in diversi punti

    della pagina; ad es. nel title delle thumb e dello slide;

    ?>

    ---aggiungi.php---

    <?
    require 'config.php';

    #Controllo se il file è stato inviato; controllo se il file è un immagine

    jpg o png e assegno alla variabile ext l’estensione giusta
    if (isset($_POST['submit'])) {
    if(!is_uploaded_file($_FILES["img"]["tmp_name"])) {
    print("<center>[b]Errore nell’upload del file");
    exit;
    }
    if($_FILES["img"]["type"] != "image/jpeg" && $_FILES["img"]["type"] !=

    "image/pjpeg" && $_FILES["img"]["type"] != "image/png" && $_FILES["img"]

    ["type"] != "image/gif" && $_FILES["img"]["type"] != "image/x-png") {
    print("<center>[b]Devi caricare un file valido!
    Il file

    caricato è : ".$_FILES["img"]["type"])."
    <a href='index.php'>Torna

    indietro</a>";
    exit;
    }
    }

    #Genero un nome per il file inviato. L'ID è un numero di 3 cifre che serve

    per controllare l'ordine dei file nella visualizazione; il valore viene

    generato nel file index.php così: (numero di immmagini della galleria +

    101).
    $nomefile = $_POST["id"] . "-" . $_FILES["img"]["name"];

    #Definisco il percorso delle immagini
    $filetemp = $nomefile;
    $filebig = $f_photo . $nomefile;
    $filesmall = $f_thumb . $nomefile;
    $fileslide = $f_slide . $nomefile;

    #Sposto il file inviato dal form nella directory scelta e con il nome

    definito sopra
    move_uploaded_file($_FILES["img"]["tmp_name"], $filetemp) or die

    ("<center>Errore durante l’upload del file");

    #Assegno alle variabili w e h rispettivamente la larghezza e l’altezza

    dell’immagine originale
    list($w, $h) = getimagesize($filetemp);

    if($_FILES["img"]["type"] == "image/jpeg" or $_FILES["img"]["type"] ==

    "image/pjpeg") {
    $im = @imagecreatefromjpeg($filetemp);
    }
    if($_FILES["img"]["type"] == "image/gif") {
    $im = @imagecreatefromgif ($filetemp);
    }
    if($_FILES["img"]["type"] == "image/png" or $_FILES["img"]["type"] ==

    "image/x-png") {
    $im = @imagecreatefrompng($filetemp);
    }
    #thumb
    $ntw = ($w / ($h / $hthumb));
    $nti=imagecreatetruecolor ($ntw,$hthumb);
    imagecopyresized($nti,$im,0,0,0,0,$ntw,$hthumb,$w, $h);
    imagejpeg($nti,$filesmall,75);

    #slide

    $nsw = ($w / ($h / $hslide));
    $newh = $hslide;
    # ridimensiono l'immagine dello slideshow se la larghezza supera le

    misure del contenitore (settato in config.php)

    if ($nsw > $wphoto) {
    $nsw = $wphoto;
    $newh = ($h / ($w / $nsw));
    }

    $nsi=imagecreatetruecolor ($nsw,$newh);
    imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
    imagejpeg($nsi,$fileslide,75);

    #big

    # ridimensiono l'immagine caricata se supera le misure indicate nel file

    config.php

    if ($h > $hbig) {$newh = $hbig;}
    else {$newh = $h;}

    $nsw = ($w / ($h / $newh));

    if ($nsw > $wbig) {
    $nsw = $wbig;
    $newh = ($h / ($w / $nsw));
    }

    $nsi=imagecreatetruecolor ($nsw,$newh);
    imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
    imagejpeg($nsi,$filebig,75);

    unlink($filetemp);


    header("Location: index.php");

    ?>

    Non aggiungo "rinomina.php", "ordina.php" ed "elimina.php" perchè non mi

    sembrano utili per la risoluzione del problema, nel caso contrario fatemelo

    saper eche le posto.

    Quindi con il codice a vostra disposizione potreste aiutarmi nel modo più

    semplice possibile?

    Vi ricordo che praticamente non conosco codice php e js.
    Chiedo scusa se mi sono dilungato troppo, ma volevo essere sicuro che fosse

    chiaro il mio problema.
    Se ho sbagliato forum o la sezione dove postare il mio problema chiedo

    scusa e chiedo di scrivermi dove avrei dovuto farlo.
    Ho provatogià a leggere altri post, ma le soluzioni proposte non facevano

    al caso mio o non sono riuscito ad implementare il codice in mio possesso.
    Ringrazio anche il creatore di questo script.
    Vi ringrazio anticipatamente tutti, Fabio

  2. #2
    Provando a capire un po il codice e meetendo in pratica qualche risposta presa qua e la sono riuscito ad implementare il codice in questo modo:

    ---index.php---

    <?
    require 'config.php';

    if ($handle = opendir($f_thumb)) {
    $array = array();
    while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != ".." && $file !="Thumbs.db") {
    $array[] = $file;
    }
    }
    closedir($handle);
    }
    usort($array, "strnatcmp");

    $id = (101 + count($array));

    if ($handle = opendir($f_thumb)) {
    $array = array();
    while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != ".." && $file !="Thumbs.db") {
    $array[] = $file;
    }
    }
    closedir($handle);
    }
    usort($array, "strnatcmp");

    $id1 = (102 + count($array));
    ?>
    <html>
    <head>
    <style>
    body{font-family:verdana;font-size:12px; text-align:center}
    table{font-family:verdana;font-size:12px; margin-right:auto; margin-left:auto;}
    h1{font-family:verdana;font-size:20px;font-weight:bold}
    </style>
    <title>Modifica la Galleria</title>
    </head>
    <body>
    <h1>aggiungi immagine</h1>


    Torna alla Galleria</p>
    <form action="aggiungi.php" method="post" enctype="multipart/form-data">
    <table border="1" cellpadding="10" align="center">
    <tr>
    <td>Immagine: </td>
    <td align="right">


    <input name="id" type="hidden" value="<? echo "$id" ?>">
    <input type="file" name="img" size="20">
    </p>



    <input name="id1" type="hidden" value="<? echo "$id1" ?>">
    <input type="file" name="img1" size="20">
    </p></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" name="submit" value="Aggiungi"></td>
    </tr>
    </table>
    </form>
    <table border="1" cellpadding="10" width="400px" align="center">
    <tr>
    <td>thumb</td>
    <td colspan="2">ordine</td>
    <td>nome</td>
    <td>azione</td>
    </tr>
    <form action="rinomina.php" method="post">
    <?php
    $x = 0;
    while ($x < (count($array))) {
    ?>
    <tr>
    <td>[img]<? echo $f_thumb. $array[$x] ?> [/img]</td>
    <td><input name="id<? echo ("$x") ?>" type="text" value="<? echo $x+1 ?>" size="1"></td>
    <td><? if ($x != 0) {
    echo '+
    ';
    }
    if ($x < (count($array)-1)) {
    echo '-';
    }
    ?></td>
    <td><input name="nome<? echo ("$x") ?>" type="text" value="<? echo (substr(rtrim ($array[$x], ".jpg.gif.png.jpeg.JPG"),4)) ?>" size="30">
    <input type="submit" value="rinomina" ></td>
    <td>Elimina</td>
    </tr>
    <? $x++;
    }
    ?></form>
    </table>
    </body>
    </html>

    -------------------------------------------------
    ---aggiungi.php---

    <?
    require 'config.php';

    #Controllo se il file è stato inviato; controllo se il file è un immagine jpg o png e assegno alla variabile ext l’estensione giusta
    if (isset($_POST['submit'])) {
    if(!is_uploaded_file($_FILES["img"]["tmp_name"])) {
    print("<center>[b]Errore nell’upload del file");
    exit;
    }
    if($_FILES["img"]["type"] != "image/jpeg" && $_FILES["img"]["type"] != "image/pjpeg" && $_FILES["img"]["type"] != "image/png" && $_FILES["img"]["type"] != "image/gif" && $_FILES["img"]["type"] != "image/x-png") {
    print("<center>[b]Devi caricare un file valido!
    Il file caricato è : ".$_FILES["img"]["type"])."
    Torna indietro";
    exit;
    }
    }

    #Genero un nome per il file inviato. L'ID è un numero di 3 cifre che serve per controllare l'ordine dei file nella visualizazione; il valore viene generato nel file index.php così: (numero di immmagini della galleria + 101).
    $nomefile = $_POST["id"] . "-" . $_FILES["img"]["name"];

    #Definisco il percorso delle immagini
    $filetemp = $nomefile;
    $filebig = $f_photo . $nomefile;
    $filesmall = $f_thumb . $nomefile;
    $fileslide = $f_slide . $nomefile;

    #Sposto il file inviato dal form nella directory scelta e con il nome definito sopra
    move_uploaded_file($_FILES["img"]["tmp_name"], $filetemp) or die("<center>Errore durante l’upload del file");

    #Assegno alle variabili w e h rispettivamente la larghezza e l’altezza dell’immagine originale
    list($w, $h) = getimagesize($filetemp);

    if($_FILES["img"]["type"] == "image/jpeg" or $_FILES["img"]["type"] == "image/pjpeg") {
    $im = @imagecreatefromjpeg($filetemp);
    }
    if($_FILES["img"]["type"] == "image/gif") {
    $im = @imagecreatefromgif ($filetemp);
    }
    if($_FILES["img"]["type"] == "image/png" or $_FILES["img"]["type"] == "image/x-png") {
    $im = @imagecreatefrompng($filetemp);
    }
    #thumb
    $ntw = ($w / ($h / $hthumb));
    $nti=imagecreatetruecolor ($ntw,$hthumb);
    imagecopyresized($nti,$im,0,0,0,0,$ntw,$hthumb,$w, $h);
    imagejpeg($nti,$filesmall,75);

    #slide

    $nsw = ($w / ($h / $hslide));
    $newh = $hslide;
    # ridimensiono l'immagine dello slideshow se la larghezza supera le misure del contenitore (settato in config.php)

    if ($nsw > $wphoto) {
    $nsw = $wphoto;
    $newh = ($h / ($w / $nsw));
    }

    $nsi=imagecreatetruecolor ($nsw,$newh);
    imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
    imagejpeg($nsi,$fileslide,75);

    #big

    # ridimensiono l'immagine caricata se supera le misure indicate nel file config.php

    if ($h > $hbig) {$newh = $hbig;}
    else {$newh = $h;}

    $nsw = ($w / ($h / $newh));

    if ($nsw > $wbig) {
    $nsw = $wbig;
    $newh = ($h / ($w / $nsw));
    }

    $nsi=imagecreatetruecolor ($nsw,$newh);
    imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
    imagejpeg($nsi,$filebig,75);

    unlink($filetemp);


    header("Location: index.php");
    ?>
    <?
    require 'config.php';

    #Controllo se il file è stato inviato; controllo se il file è un immagine jpg o png e assegno alla variabile ext l’estensione giusta
    if (isset($_POST['submit'])) {
    if(!is_uploaded_file($_FILES["img1"]["tmp_name"])) {
    print("<center>[b]Errore nell’upload del file");
    exit;
    }
    if($_FILES["img1"]["type"] != "image/jpeg" && $_FILES["img1"]["type"] != "image/pjpeg" && $_FILES["img1"]["type"] != "image/png" && $_FILES["img1"]["type"] != "image/gif" && $_FILES["img1"]["type"] != "image/x-png") {
    print("<center>[b]Devi caricare un file valido!
    Il file caricato è : ".$_FILES["img1"]["type"])."
    Torna indietro";
    exit;
    }
    }

    #Genero un nome per il file inviato. L'ID è un numero di 3 cifre che serve per controllare l'ordine dei file nella visualizazione; il valore viene generato nel file index.php così: (numero di immmagini della galleria + 101).
    $nomefile = $_POST["id1"] . "-" . $_FILES["img1"]["name"];

    #Definisco il percorso delle immagini
    $filetemp = $nomefile;
    $filebig = $f_photo . $nomefile;
    $filesmall = $f_thumb . $nomefile;
    $fileslide = $f_slide . $nomefile;

    #Sposto il file inviato dal form nella directory scelta e con il nome definito sopra
    move_uploaded_file($_FILES["img1"]["tmp_name"], $filetemp) or die("<center>Errore durante l’upload del file");

    #Assegno alle variabili w e h rispettivamente la larghezza e l’altezza dell’immagine originale
    list($w, $h) = getimagesize($filetemp);

    if($_FILES["img1"]["type"] == "image/jpeg" or $_FILES["img1"]["type"] == "image/pjpeg") {
    $im = @imagecreatefromjpeg($filetemp);
    }
    if($_FILES["img1"]["type"] == "image/gif") {
    $im = @imagecreatefromgif ($filetemp);
    }
    if($_FILES["img1"]["type"] == "image/png" or $_FILES["img1"]["type"] == "image/x-png") {
    $im = @imagecreatefrompng($filetemp);
    }
    #thumb
    $ntw = ($w / ($h / $hthumb));
    $nti=imagecreatetruecolor ($ntw,$hthumb);
    imagecopyresized($nti,$im,0,0,0,0,$ntw,$hthumb,$w, $h);
    imagejpeg($nti,$filesmall,75);

    #slide

    $nsw = ($w / ($h / $hslide));
    $newh = $hslide;
    # ridimensiono l'immagine dello slideshow se la larghezza supera le misure del contenitore (settato in config.php)

    if ($nsw > $wphoto) {
    $nsw = $wphoto;
    $newh = ($h / ($w / $nsw));
    }

    $nsi=imagecreatetruecolor ($nsw,$newh);
    imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
    imagejpeg($nsi,$fileslide,75);

    #big

    # ridimensiono l'immagine caricata se supera le misure indicate nel file config.php

    if ($h > $hbig) {$newh = $hbig;}
    else {$newh = $h;}

    $nsw = ($w / ($h / $newh));

    if ($nsw > $wbig) {
    $nsw = $wbig;
    $newh = ($h / ($w / $nsw));
    }

    $nsi=imagecreatetruecolor ($nsw,$newh);
    imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
    imagejpeg($nsi,$filebig,75);

    unlink($filetemp);


    header("Location: index.php");

    ?>

    ----------------------------------------------------------
    Adesso riesco a caricare più immagini nella cartella temporanea, ma non so per quale motivo a volte funziona l'elaborazione di tutte le immagini caricate, altre volte solo della prima.

    Cosa sto sbagliando?

    ricordo che lo script non è mio e che non so praticamente quasi nulla di php e sto andando per tentativi, quindi qualsiasi aiuto è aprezzato e chiedo perfavore che le risposte siano il più chiare possibili.
    Grazie Fabio

  3. #3
    Grazie comunque a tutti; alla fine lo script era giusto, il suo lavoro lo fa, però le immagini che si caricano devono essere con il lato più lungo della lunghezza stabilita in "config.php".

    Chi avesse bisogno di questo script con caricamento singolo lo può scaricare dlla sezione "script php".
    Se invece qualcuno lo volesse con caricamento multiplo mi scriva che glielo farò avere.

    Per ora l'ho implementato per il caricamento di 5 immagini alla volta con il lato più lungo di 2000 px.
    Cosa importante per chi non avesse ancora capito il tipo di script, è una photogallery molto semplice e personalizzabile al massimo con scorrimento di thumbnails, in contemporanea visione dell'anteprima e cliccando sull'anteprima è possibile visualizzare l'immagine grande.
    Spero possa essere utile a qulcuno.

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.