Visualizzazione dei risultati da 1 a 6 su 6

Discussione: upload file con php

  1. #1

    upload file con php

    mi rivolgo di nuovo a voi utenti esperti di php per risolvere questa cosa che mi lascia perplesso (grazie di nuovo per la vostra pazienza e professionalità

    vi posto questo pezzo di codice che dovrebbe caricare una serie di immagini jpeg o gif in locale (uso easy php 2.0) ma spesso ho problemi di immagine non caricata:


    questo è il form che mostra come caricare le immagini
    Codice PHP:
    echo"<form name=\"uploadimm\" action=\"creazione.php\" method=\"post\" ENCTYPE=\"multipart/form-data\">";
             echo
    "<table class=\"registrazione\">";

             while(
    $i <= $num)
              {
                echo
    "<tr>";
                echo
    "    <td><p align=\"center\">alternativa num." .$i ."</p> </td>";
                echo
    "    <td><input type=\"file\" name=\"alternativa" .$i ."\" size=\"50\"> </td>";
                echo
    "    <td><p align=\"center\">corretta</p> </td>";
                echo
    "    <td><input type=\"CHECKBOX\" name=\"yes" .$i ."\"> </td>";
                echo
    "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"800\">";
                echo
    "    <td> 
     
     
     </td>"
    ;
                echo
    "</tr>";
                
    $i++;
              }
             echo
    "    <input type=\"hidden\" name=\"num\" value=\"" .$num ."\">";
             echo
    "    <input type=\"hidden\" name=\"mod\" value=\"" .$mod ."\">";
             echo
    "<tr>";
             echo
    "     <td> <input type=\"reset\" name=\"resetta\" > </td>";
             echo
    "     <td> <input type=\"submit\" name=\"submit2\" value=\"invia\"> </td>";
             echo
    "     <td> 
     
     
     </td>"
    ;
             echo
    "</tr>";
             echo
    "</table>";
             echo
    "</form>"
    questo è la parte che controlla l'inserimento e copia i file nella cartella

    Codice PHP:
    $i "1";
               while(
    $i <= $num)
               {
                 
    $tmp "alternativa".$i;

                 if(
    is_uploaded_file($_FILES[$tmp]['tmp_name']))
                 {
                   if (
    $_FILES[$tmp]['error'] == 2)
                   {
                   
    // errore, file troppo grande (> 800kB)
                   
    die("Errore, file troppo grande: il massimo consentito è 800kB");
                   }
                   if (
    strtolower($_FILES[$tmp]['type']) == "image/gif" || strtolower($_FILES[$tmp]['type']) == "image/jpeg" )
                   {
                     
    copy($_FILES[$tmp]['tmp_name'], "file_caricati/".$_FILES[$tmp]['name']) or die("Impossibile caricare il file");
                     echo 
    "file caricato 
    "
    ;
                   }
                   else
                   {
                       echo
    "il file" .$tmp ."non è formato valido (jpeg o gif) 
    "
    ;
                       
    //header("Refresh: 3; url=http://localhost/creazione.php");
                       
    echo $_FILES['error'];
                   }
                 }
    //fine controllo se è uploadato
                 
    else
                 {
                   echo
    "alternativa" .$i ."non caricata 
    "
    ;
                   
    //header("Refresh: 3; url=http://localhost/creazione.php");
                 
    }//fine non uploadato
                 
    $i++;
               }
    //fine while immagini 
    uso la funzione is_upload_file() e se ritorna false mi appare alternativa non caricata.
    Il mio problema è che questo appare in modo randomico ovvero se per esempio carico 4 file 2 li carica e altri due no. :master:
    La mia domanda è ci sono errori nel codice?
    Ah questo potrebbe servirvi...
    ######php.ini####

    file_uploads = On

    upload_tmp_dir = "${path}\tmp\"

    upload_max_filesize = 2M

    post_max_size = 10M
    ###########

    grazie davvero a tutti quelli che potranno darmi dei suggerimenti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    premetto che non ho analizzato il codice php... hai verificato i limiti di dimensione per esempio?

    Se il problema è abbastanza riproducibile (es. caricando 10 file, almeno una volta succede), prova a fare 10 copie di uno stesso file con nomi 1.jpg, 2.jpg, ..., 10.jpg e carica queste: se non succede allora probabilmente dipende dall'immagine.

  3. #3
    grazie per questo suggerimento. Allora ho effettuato 3 test.

    Nel primo ho preso un'immagine e l'ho copiata 6 volte (1,2,3,4,5,6 .gif) e l'ho caricata. ME le metteva tutte senza problemi e ho provato più volte. (85x85 414 Byte)

    Nel secondo ho provata con 2 imm diverse (con nomi diversi) e una la caricava l'altra no. una come nel test 3 l'altra 97x18 da 1,3 kB

    Allora ho preso quella di prima che caricava e ne ho fatto 2 copie. Le ho rinominate 1,2,3 .gif
    ma quando vado a caricarle la prima me la prende mentre le altre due mi esce alternativa non caricata. (gif 147x18 da 1,47 Kb)

    adesso provo a fare altri test ma sincermante non saprei cosa concludere

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se ho ben capito nell'ultima prova la stessa immagine (con 3 nomi diversi) la prima volta carica e le successive no... in questo caso il problema potrebbe essere nel server: magari nei tempi di invio (troppo ravvicinati magari)? Un altro problema potrebbe essere legato ai file temporanei... fai anche questo controllo: prima dell'IF stampa il contenuto della variabile $_FILES per capire se è vuota o c'è qualcosa), cioè:

    Codice PHP:
    var_export($_FILES); 

  5. #5
    grazie sono riuscito a trovare!

    sono andato a leggere gli errori di $_FILES e ho sostituito is_Upload_file() con
    if($_FILES[$tmp]['error'] == UPLOAD_ERR_OK) che vuol dire se non ci sono errori

    poi ho stampato $_FILES[$tmp]['error'] e ho visto che mi segnava 2 nei file che caricavo quindi eccedevo nel max_FILE_SIZE che ho scoperto essere settato da me nel campo hidden a 800 byte. e per quello che non funzionava! cmq grazie che senza la tua idea di fare il test non ci sarei mai arrivato!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prego!

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.