Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23

    Problema upload immagini

    Salve a tutti, non riesco a far funzionare l'upload delle immagini in un progetto che sto sviluppando su Mac con l'ausilio di MAMP per i test.

    Ho il seguente form html
    form.jpg

    che rimanda al seguente script php
    script.php.jpg
    (scusate per le immagini ma non riesco a postare il codice, se dopo riesco li posto sotto)

    Sembra che non prelevi proprio il file dal pc, infatti lo script da errore sempre all'istruzione if con is_uploaded_file()

    Ho provato anche a settare manualmente i permessi della cartella temp ma niente, ho provato lo script anche caricandolo direttamente al posto di un sito che gestisco su Linux ma niente, sempre lo stesso errore.
    Ho controllato il php.info e sembra tutto regolare, upload attivo, limite size alto ecc....

    Non capisco proprio dove sta l'errore o comunque il problema. Qulcuno riesce a darmi una mano???
    Grazie in anticipo a tutti!!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    Codice del form html

    codice HTML:
     <div id="upform">
      <form id="form" action="form.inc.php" method="post" enctype="multipart/form-data">
        <fieldset>
         <legend>Caricamento foto:</legend>
         <label id="lbl">Seleziona il file <em>(jpg, jpeg o png)*</em><span style="font-size:0.4em"> CAMPO SEMPRE NECESSARIO!!!</span> :</label><br />
           <input type="file" id="inpt" name="foto" value="" /><br /><br />
       </fieldset>
       <fieldset>
         <legend>Le seguenti informazioni sono necessarie SOLO se si carica l'articolo nello shop:</legend>
          <label id="lbl">Breve descrizione indicativa dell&apos;oggetto:</label><br />
          <input type="text" id="inpt" name="desc" placeholder="Descrizione indicativa" maxlength="150" /><br />
          <label id="lbl">Indica il prezzo dell&apos;oggetto:</label><br />
          <input type="number" id="inpt" name="prezzo" /><br /><!-- mi sa che non prende la virgola -->
          <label id="lbl">Indica la quantit&agrave; disponibile:</label><br />
          <input type="number" id="inpt" name="qta" /><br />
          <label id="lbl">Scegli la categoria:</label><br />
          <select id="inpt" name="cat">
           <option value="abiti">Abiti</option>
           <option value="giacche">Giacche</option>
           <option value="sciarpe">Sciarpe</option>
           <option value="cappelli">Cappelli</option>
          </select>
       </fieldset>
       <fieldset>
        <legend>Seleziona il tipo di caricamento necessario:</legend>
         <input type="submit" id="upbutton" name="action" value="GALLERIA" />
         <input type="submit" id="upbutton" name="action" value="SHOP" />
         <input type="submit" id="upbutton" name="action" value="ENTRAMBI" />
       </fieldset>
      </form>
     </div>

  3. #3
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Le immagini sono troppo piccole, non si riesce a leggere il codice.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    codice dello script php per il caricamento

    Codice PHP:
    // definizione directory di caricamento
    define("GALLERY""/gallery/");
    define("SHOP""/shop/".$cat."/");
    chmod(GALLERY0777) or die ("Impossibile settare i permessi della cartella Gallery");
    chmod(SHOP0777) or die ("Impossibile settare i permessi della cartella Shop");

    // recupero informazioni form
    $desc trim(addslashes(htmlspecialchars($_POST['desc'], ENT_QUOTES'UTF-8')));
    $prezzo trim($_POST['prezzo']);
    $qta trim($_POST['qta']);
    $cat trim($_POST['cat']);
    $prefisso date(YmdHis);

    // controllo se il file è stato caricato nella cartella temporanea del server
    if (is_uploaded_file($_FILES['foto']['tmp_name']))){
        
    // controllo il formato
         
    if ($_FILES['foto']['type'] != "image/jpeg" || $_FILES['foto']['type']  != "image/jpg" || $_FILES['foto']['type'] != "image/png"){
            
    // se non ci sono altri errori
            
    if ($_FILES['foto']['error'] == 0){
                
    // inizio le operazioni per l'upload
                // nuovo nome del file
                
    $oldname htmlspecialchars(str_replace(" ""_"$_FILES['foto']['name']), ENT_QUOTES"UTF-8");
                
    $newname $prefisso.$oldname;
                
    // se la scelta utente è Gallery
                
    if (isset($_POST['action']) && $_POST['action'] == "GALLERIA"){
                    
    move_uploaded_file($_FILES['foto']['tmp_name'], GALLERY.$newname) or die("Impossibile spostare il file");
                    echo 
    "Il file ".$_FILE['foto']['name']." &egrave; stato caricato correttamente in Galleria";
                    
    header('refresh:1; url=index.php?form');
                }
                
    // se la scelta utente è Shop
                
    elseif (isset($_POST['action']) && $_POST['action'] == "SHOP"){
                    
    move_uploaded_file($_FILES['foto']['tmp_name'], SHOP.$newname) or die("Impossibile spostare il file");
                    
    //creo il file delle info
                    
    $newtxt SHOP.$newname.".txt";
                    
    fopen($newtxt'w+') or die("Impossibile creare il file delle informazioni");
                    
    fwrite($newtxt$desc."\n") or die("Impossibile scrivere nel file delle informazioni - descrizione");
                    
    fwrite($newtxt$prezzo."\n") or die("Impossibile scrivere nel file delle informazioni - prezzo");
                    
    fwrite($newtxt$qta) or die("Impossibile scrivere nel file delle informazioni - quantit&agrave;");
                    
    fclose($newtxt);
                    echo 
    "Il file ".$_FILE['foto']['name']." &egrave; stato caricato correttamente in Shop/".$cat."/";
                    
    header('refresh:1; url=index.php?form');
                }
                
    // se la scelta utente è Entrambi
                
    elseif (isset($_POST['action']) && $_POST['action'] == "ENTRAMBI"){
                    
    move_uploaded_file($_FILES['foto']['tmp_name'], SHOP.$newname) or die("Impossibile spostare il file");
                    
    copy(SHOP.$newnameGALLERY.$newname) or die("Impossibile copiare il file");
                    
    // creo il file delle info
                    
    $newtxt SHOP.$newname.".txt";
                    
    fopen($newtxt'w+') or die("Impossibile creare il file delle informazioni");
                    
    fwrite($newtxt$desc."\n") or die("Impossibile scrivere nel file delle informazioni - descrizione");
                    
    fwrite($newtxt$prezzo."\n") or die("Impossibile scrivere nel file delle informazioni - prezzo");
                    
    fwrite($newtxt$qta) or die("Impossibile scrivere nel file delle informazioni - quantit&agrave;");
                    
    fclose($newtxt);
                     echo 
    "Il file ".$_FILE['foto']['name']." &egrave;  stato caricato correttamente sia in Galleria che in Shop/".$cat."/";
                    
    header('refresh:1; url=index.php?form');
                }
            }
            else{
                
    // errore generico
                
    die("Errore, impossibile caricare il file, codice errore :  ".$_FILES["foto"]["error"]);
            }
        }
        else{
            die(
    "Formato file non valido, solo JPG JPEG PNG");
        }
    }
    else{
        die(
    "Si sono verificati errori durante il caricamento! <a href=\"index.php?form\">Riprova</a>");


  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    ok sono riuscito a postare il codice..... almeno quello!!!

  6. #6
    Ciao,

    Che errore hai in $_FILES['foto']['error']?


    Se il file non e caricato e $ _File matrice è vuoto, quindi controlla php.ini file..Il file_uploads opzione deve essere attivata 'On' per consentire il caricamento di file. Accenderlo e riavvia apache di avere effetto.

    Se invece $ _FILES e $ _POST sono vuoti, questo può essere causa di
    - Il limite fissato dalla post_max_size nel php.ini
    - Il limite fissato dal upload_max_filesize in php.ini

    Grazie,
    Cristiana.
    #OracleCloud

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    Ciao Cristiana, l'errore non lo so perché lo salta direttamente, in quanto is_uploaded_file evidentemente restituisce false.
    Il php.ini l'ho controllato, upload è ON ed il limite è 32mb in MAMP, e 25mb nel server Linux su Aruba dove l'ho testato.
    L'unica cosa che non ho controllato è post_max_size , che guarderò appena posso!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    niente .... anche post_max_size è 30mb

    non riesco veramente a capire dov'è il problema

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prima di is_uploaded_file(), scrivi var_dump($_FILES) e vedi cosa arriva al PHP dal form

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2014
    residenza
    Arezzo
    Messaggi
    23
    @clasku ho provato, senza avere fatto nient'altro adesso non da più errore il_uploaded_file ed il var_dump restituisce l'array di FILES pieno, con i dati corretti.
    Dopo però mo da errore il move_uploaded_file ma credo che sia un problema di permessi (il chmod iniziale ho dovuto commentarlo perchè mi dava errore), sicuramente in locale con il Mac sbaglio qualcosa io nel settare i permessi della cartella.

    Una domanda, nel momento dell'errore move_uploaded_file il sistema cancella il file temporaneo dalla cartella tmp?? perchè li non 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.