Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    13

    Inserimento multiplo immagini

    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 :
    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>
    Codice 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 ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    il

    <inputtype="file"name="fileup"/>

    deve essere una array

    <input type="file" name="fileup[]" />

    e poi la devi ciclare o estrarre gli elementi con $_FILES['fileup'][n], $_FILES['fileup'][n+1]​, etc...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    13
    Mi correggi le parti per favore almeno capisco come farlo fisicamente

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Codice 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
    $uploadpath $uploadpath."galleria_".$nome;       // gets the file name 
    $err         ''

    if (isset(
    $_FILES['fileup']) && is_array($_FILES['fileup']))
    {
        foreach (
    $_FILES['fileup'] as $k => $_file)
        {
            
    // Random name
            
    $random md5(TIME_NOW $k);
        
            
    // Check extension
            
    $sepext explode('.'strtolower($_file[$k]['name']));
            
    $type     end($sepext);       // gets extension 
            
    if(!in_array($type$allowtype))
            {
                
    $err .= 'Questo file: <b>'htmlspecialchars($_file[$k]['name']) . '</b> non ha un estensione conforme al sistema .';  
            }
            
            
    // Check size
            
    if ($_file[$k]['size'] > $max_size*8000)
            {
                
    $err .= '<br/>''Questo file: <b>'htmlspecialchars($_file[$k]['name']) . '</b> &egrave; troppo pesante: '$max_size' KB.';  
            }
            
            
    // Check width and height
            
    list($width$height) = getimagesize($_file[$k]['tmp_name']);
            if(isset(
    $width) && isset($height) && ($width >= $alwidth || $height >= $alheight)
            {
                
    $err .= '<br/>''Questo file: <b>'htmlspecialchars($_file[$k]['name']) . '</b> supera le dimensioni di: '$alwidth' x '$alheight;
            }
            
            
    // No errors?
            
    if ($err == '')
            {
                if (
    move_uploaded_file($_FILES['fileup']['tmp_name'], "$uploadpath/$random.$sepext")
                {
                    echo 
    'Upload  effetuato con successo per il file: '.htmlspecialchars($_file[$k]['name']);
                }
                else
                {
                    
    $err .= '<br/>''Errore sconosciuto, questo file non è stato caricato: <b>'htmlspecialchars($_file[$k]['name']) . ' riprova!';
                }
            }
            
            if (
    $err != '')
            {
                echo 
    $err;
            }
        }
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    13
    Però cosi facendo hai tolto una parte che dovresti spiegarmi ( intanto mi hai già fornito un grande aiuto e te ne sono grato), io nel codice prima che utilizzavo in realtà per l'avatar dell'utente specificavo in fondo oltre a muovere il file anche di inserire l'url nel db cosichè da vedersi dopo. qua invece non c'è, da script rileva la cartella? mi dai tu qualche suggerimento almeno so come muovermi?

    ancora grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    13
    Ci Provo Io poi dimmi com'è:

    Cambio due cose nel tuo codice facendo si che si crei una cartella in base all'utente ( dimmi secondo te se va bene)
    Codice PHP:
    <?php
    $nome         
    $_SESSION['login'];
    $cartella mkdir("pages/gallery/".$nome0777);

    $uploadpath 'pages/gallery/$nome';      // 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
    $uploadpath $uploadpath."galleria_".$nome;       // gets the file name 
    $err         ''

    if (isset(
    $_FILES['fileup']) && is_array($_FILES['fileup']))
    {
        foreach (
    $_FILES['fileup'] as $k => $_file)
        {
            
    // Random name
            
    $random md5(TIME_NOW $k);
        
            
    // Check extension
            
    $sepext explode('.'strtolower($_file[$k]['name']));
            
    $type     end($sepext);       // gets extension 
            
    if(!in_array($type$allowtype))
            {
                
    $err .= 'Questo file: <b>'htmlspecialchars($_file[$k]['name']) . '</b> non ha un estensione conforme al sistema .';  
            }
            
            
    // Check size
            
    if ($_file[$k]['size'] > $max_size*8000)
            {
                
    $err .= '<br/>''Questo file: <b>'htmlspecialchars($_file[$k]['name']) . '</b> &egrave; troppo pesante: '$max_size' KB.';  
            }
            
            
    // Check width and height
            
    list($width$height) = getimagesize($_file[$k]['tmp_name']);
            if(isset(
    $width) && isset($height) && ($width >= $alwidth || $height >= $alheight)
            {
                
    $err .= '<br/>''Questo file: <b>'htmlspecialchars($_file[$k]['name']) . '</b> supera le dimensioni di: '$alwidth' x '$alheight;
            }
            
            
    // No errors?
            
    if ($err == '')
            {
                if (
    move_uploaded_file($_FILES['fileup']['tmp_name'], "$uploadpath/$random.$sepext")
                {
                    echo 
    'Upload  effetuato con successo per il file: '.htmlspecialchars($_file[$k]['name']);
                }
                else
                {
                    
    $err .= '<br/>''Errore sconosciuto, questo file non è stato caricato: <b>'htmlspecialchars($_file[$k]['name']) . ' riprova!';
                }
            }
            
            if (
    $err != '')
            {
                echo 
    $err;
            }
        }
    }
    Poi per visualizzare invece la cartella in una pagina :

    Codice PHP:
    <?php
    $nome         
    $_SESSION['login']; 
    // Specificare il percorso della directory che contiene le immagini
    $img_dir "pages/gallery/$nome";
    // Utilizzo opendir per aprire la directory
    $handle opendir($img_dir);
    // Esploro il contenuto della directory
    while ($files readdir($handle)) {
      
    // Preparo le miniature...
      
    if ($files != "." && $files != ".." && substr($files,strlen($files)-6) == "_s.jpg" ) {
        
    $foto $img_dir '/' $files;
        
    $miniatura $img_dir '/' substr($files,0,strlen($files)-6) . '.jpg';
        
    $commento "";
      
    // ... ed eventuali commenti
        
    if (file_exists($img_dir '/' substr($files,0,strlen($files)-6) . '.txt')) {
          
    $commento file_get_contents($img_dir '/' substr($files,0,strlen($files)-6) . '.txt') ;
        }
        
    // Stampo il codice HTML per la visualizzazione della galleria
        
    print '<a href="'.$miniatura.'"><img border="0" src="'.$foto.'" alt="" width="121" height="91" title="'.$commento.'" /></a>'."\n";
    Cosa ne dici?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    13
    Ho provato col tuo e anche con il mio ma niente. ( manca qualche parentesi nei check ma niente di che)
    Col tuo mi da subito che l'estensione non va bene ( anche se era un jpg ) così:
    Questo file:
    non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .Questo file: non ha un estensione conforme al sistema .
    allora levo per un attimo il controllo lasciando :
    Codice PHP:
     $sepext explode('.'strtolower($_file[$k]['name'])); 
    che servirebbe alla fine del codice per l'estensione, tolta mi continua a dare l'ultimo errore cioè che non riesce a spostarlo... qualche idea ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    L'array $_FILE ha una struttura fatta così (questi di sicuro, non so se altri)
    $_FILES["upload"]["name"]: nome del file caricato;
    $_FILES["upload"]["type"]: tipo di file caricato (in formato mime type, quindi tpo image/png);
    $_FILES["upload"]["size"]: dimensione del file caricato;
    $_FILES["upload"]["tmp_name"]: percorso e il nome del file temporaneo sul server;
    $_FILES["upload"]["error"]: un codice numerico compreso fra 0 e 8 indicante il tipo di errore che si è verificato, pari a 0 in assenza di errore.

    Per fare i tuoi controlli, in particolare dimensione ed estensione puoi utilizzare questi e risparmiare righe di codice e leggibilità.
    Riccardo Sadocchi
    Microsoft MCP C#

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    13
    Quote Originariamente inviata da rikyeko Visualizza il messaggio
    L'array $_FILE ha una struttura fatta così (questi di sicuro, non so se altri)
    $_FILES["upload"]["name"]: nome del file caricato;
    $_FILES["upload"]["type"]: tipo di file caricato (in formato mime type, quindi tpo image/png);
    $_FILES["upload"]["size"]: dimensione del file caricato;
    $_FILES["upload"]["tmp_name"]: percorso e il nome del file temporaneo sul server;
    $_FILES["upload"]["error"]: un codice numerico compreso fra 0 e 8 indicante il tipo di errore che si è verificato, pari a 0 in assenza di errore.

    Per fare i tuoi controlli, in particolare dimensione ed estensione puoi utilizzare questi e risparmiare righe di codice e leggibilità.
    Riusciresti ad esplicitarmi il codice con questo esempio?

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    così al volo direi ad esempio

    Codice PHP:
    // Check extension
    $allowedtype = array('image/png','image/jpg','image/jpeg','image/gif');

    if(!
    in_array(strtolower($_file[$k]['type'], $allowtype))
    {
        
    $err .= 'Questo file: <b>'htmlspecialchars($_file[$k]['name']) 
                . 
    '</b> non ha un estensione conforme al sistema .';


    o comunque puoi ridurre codice con

    Codice PHP:

    if(!in_array(strtolower(end(explode('.'$_FILES[$k]['name']))),$allowedtype))
    {
        
    $err .= 'Questo file: <b>'htmlspecialchars($_file[$k]['name']) 
                . 
    '</b> non ha un estensione conforme al sistema .';


    mentre per la dimensione l'esempio di zacca già lo riporta con $_file[$k]['size'], ricorda che questo ti restituisce la dimensione in byte (es. 1mb è poco più di 1.000.000 byte)
    Riccardo Sadocchi
    Microsoft MCP C#

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.