Visualizzazione risultati 1 fino 15 di 15

Discussione: Upload file

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito Upload file

    Salve.

    Ho fatto questo codice:

    Codice HTML:
    <script language="javascript">
    function crea()
    {
    	document.getElementById('foto').innerHTML = '';
    	for(i=1;i<=document.dati.num_foto.value;i++)
    		document.getElementById('foto').innerHTML += "<font color='#00FF00'>Immagine "+i+": </font><input name='img"+i+"' type='file' accept='image/jpeg'><br>";
    }
    </script>
    </head>
    <body>
    <form method='post' enctype="multipart/form-data" name="dati">
    	<font color="#00FF00">Immetti nome album: </font><input type="text" name='album'><br />
    	<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    	<font color="#00FF00">Immetti numero di foto: </font><input type="text" name="num_foto" size="2" onChange='javascript:crea();'/><input type="button" value="ok" /><br />
    	<div id='foto'></div>
    	<input type="reset" value="Resetta" />
    	<input type="submit" value="Invia" />
    </form>
    e, sempre nella stessa pagina:

    Codice PHP:
    $conta = 0;
    $rename = 0;
    mkdir("immagini/fotogallery/".$_POST['album']."/",0777);
    $dir = "immagini/fotogallery/".$_POST['album'];
    for(
    $i=1;$i<$_POST['num_foto'];$i++)
    {
    $tName = $_FILES['img'.$i]['tmp_name'];
    $name = $_FILES['img'.$i]['name'];
    if(
    move_uploaded_file($tName,$dir.$name))
    $conta++;
    /* if(rename("immagini/fotogallery/".$_POST['album']."/img$i.JPG","immagini/fotogallery/".$_POST['album']."/$i.JPG"))
    $rename++;*/
    }
    Premetto che lo sto provando solo in locale, per ora...

    Comuqnue tutto funziona, a parte "move_uploaded_file($tName,$dir.$name)".
    Quindi presumo che non vadano bene queste due righe:

    Codice PHP:
    $tName = $_FILES['img'.$i]['tmp_name'];
    $name = $_FILES['img'.$i]['name'];
    Mi potreste dare una mano?

    Grazie,

    Ciao!

  2. #2
    Guest

    Predefinito

    prova a sostituire quella riga con
    Codice PHP:
    move_uploaded_file($tName,$dir."/".$name)

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Grazie, ma non funziona ugualmente

    Ciao!

  4. #4
    Guest

    Predefinito

    Beh.. l'unico errore che è rimasto è nel for, non deve essere
    Codice PHP:
    for($i=1;$i<$_POST['num_foto'];$i++)
    ma
    Codice PHP:
    for($i=1;$i<=$_POST['num_foto'];$i++)

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Hai ragione... Ho messo minore invece di minore o uguale perché AVEVO inizializzato la variabile $i a 0.
    Poi, per praticità l'ho inizializzata a 1 e mi sono dimenticato di controllare l'operatore...

    Purtroppo lo corretto, ma non funziona ugualmente

    Credo che ho messo quegli <input type='file'> dentro un div e generati da quel document.getElementById(...) e quindi ho paura che i loro dati non vengano inviati con il post, perché sono dentro un div...

    E' la prima volta che metto un div dentro un form....

    Ciao!

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Hai ragione... Ho messo minore invece di minore o uguale perché AVEVO inizializzato la variabile $i a 0.
    Poi, per praticità l'ho inizializzata a 1 e mi sono dimenticato di controllare l'operatore...

    Purtroppo lo corretto, ma non funziona ugualmente

    Credo che ho messo quegli <input type='file'> dentro un div e generati da quel document.getElementById(...) e quindi ho paura che i loro dati non vengano inviati con il post, perché sono dentro un div...

    E' la prima volta che metto un div dentro un form....

    Ciao!
    Scusa puoi postare l'errore che ottieni? Oppure tutto il codice?
    Perchè io ho preso i due pezzi che hai fatto tu, li ho messi insieme, ho corretto gli errori e in locale funziona tutto.

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Questo è tutto il file:

    Codice PHP:
    <?php
    session_start
    ();
    if(
    $_SESSION['ok'] != 1)
    {
    header("Location: impostazioni.php");
    die();
    }

    if(!isset(
    $_POST['album']))
    {
    ?>
    <html>
    <head>
    <title>
    carica album
    </title>
    <script language="javascript">
    function crea()
    {
    document.getElementById('foto').innerHTML = '';
    for(i=1;i<=document.dati.num_foto.value;i++)
    document.getElementById('foto').innerHTML += "<font color='#00FF00'>Immagine "+i+": </font><input name='img"+i+"' type='file'><br>";
    }
    </script>
    </head>
    <body>
    <form method='post' enctype="multipart/form-data" name="dati">
    <font color="#00FF00">Immetti nome album: </font><input type="text" name='album'><br />
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <font color="#00FF00">Immetti numero di foto: </font><input type="text" name="num_foto" size="2" onChange='javascript:crea();'/><input type="button" value="ok" /><br />
    <div id='foto'></div>
    <input type="reset" value="Resetta" />
    <input type="submit" value="Invia" />
    </form>
    </body>
    </html>
    <?php
    }
    else
    {
    $conta = 0;
    $rename = 0;
    mkdir("immagini/fotogallery/".$_POST['album']."/",0777);
    $dir = "immagini/fotogallery/".$_POST['album'];
    for(
    $i=1;$i<=$_POST['num_foto'];$i++)
    {
    $tName = $_FILES['img'.$i]['tmp_name'];
    $name = $_FILES['img'.$i]['name'];
    if(
    move_uploaded_file($tName,$dir."/".$name))
    $conta++;
    /* if(rename("immagini/fotogallery/".$_POST['album']."/img$i.JPG","immagini/fotogallery/".$_POST['album']."/$i.JPG"))
    $rename++;*/
    }
    echo
    "
    <html>
    <head>
    <title>
    $conta Foto caricate
    </title>
    </head>
    <body>
    Sono state caricate
    $conta foto !<br>Sono state rinominate $rename foto !
    </body>
    </html>
    "
    ;
    }
    ?>
    Se lo vuoi provare, dovresti togliere le prime righe che controllano la sessione.

    Comunque NON MI DA ALCUN ERRORE, ma non mi carica il file;

    Inffatti mi dice:

    Sono state caricate 0 foto

    ...Poi, se ti funziona, puoi provare se funziona anche il rename nel commento?
    (dovrebbe rinominare le foto con numeri. ed esempio 1.JPG;2.JPG;3.JPG ...)

    Grazie,

    Ciao!

  8. #8
    Guest

    Predefinito

    Si mi funziona. Comunque il rename è sbagliato
    Codice PHP:

    <?php

    if(empty($_POST['album']))
    {
    ?>
    <html>
    <head>
    <title>
    carica album
    </title>
    <script language="javascript">
    function crea()
    {
    document.getElementById('foto').innerHTML = '';
    for(i=1;i<=document.dati.num_foto.value;i++)
    document.getElementById('foto').innerHTML += "<font color='#00FF00'>Immagine "+i+": </font><input name='img"+i+"' type='file'><br>";
    }
    </script>
    </head>
    <body>
    <form method='post' enctype="multipart/form-data" name="dati">
    <font color="#00FF00">Immetti nome album: </font><input type="text" name='album'><br />
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <font color="#00FF00">Immetti numero di foto: </font><input type="text" name="num_foto" size="2" onChange='javascript:crea();'/><input type="button" value="ok" /><br />
    <div id='foto'></div>
    <input type="reset" value="Resetta" />
    <input type="submit" value="Invia" />
    </form>
    </body>
    </html>
    <?php
    }
    else
    {
    $conta = 0;
    $rename = 0;
    mkdir("immagini/fotogallery/".$_POST['album']."/",0777);
    $dir = "immagini/fotogallery/".$_POST['album'];
    for(
    $i=1;$i<=$_POST['num_foto'];$i++)
    {
    $tName = $_FILES['img'.$i]['tmp_name'];
    $name = $_FILES['img'.$i]['name'];
    if(
    move_uploaded_file($tName,$dir."/".$name))
    $conta++;
    if(
    rename("immagini/fotogallery/".$_POST['album']."/".$_FILES['img'.$i]['name']."","immagini/fotogallery/".$_POST['album']."/".$i.".JPG"))
    $rename++;
    }
    echo
    "
    <html>
    <head>
    <title>
    $conta Foto caricate
    </title>
    </head>
    <body>
    Sono state caricate
    $conta foto !<br>Sono state rinominate $rename foto !
    </body>
    </html>
    "
    ;
    }
    ?>

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Purtroppo a me in locale non funziona...

    Comunque spero che quando lo metterò in internet funzioni!

    Grazie,

    Ciao!

  10. #10
    Guest

    Predefinito

    L'ho provato pure io in locale e non funziona! Da errore nella creazione della cartella! XD

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    A me la cartella la crea. Non carica i file

    Ciao!

  12. #12
    Guest

    Predefinito

    Ho fatto un po' di debug delle variabili, e ho notato che $tName resta vuota, non so per quale motivo.
    EDIT: l'ho riscritto, almeno mi sono tolto il pensiero. In locale funge:
    Codice PHP:
    <html>
    <head>
    <title>Carica album</title>
    <script type="text/javascript">
    function crea()
    {
    document.getElementById('foto').innerHTML = '';
    for(i=1;i<=document.forms[0].num_foto.value;i++)
    document.getElementById('foto').innerHTML += "Immagine "+i+": <input name='img"+i+"' type='file'><br>";
    }
    </script>
    </head>
    <body>
    <?php
    if(!isset($_POST['nome'])) {
    ?>
    <form action="" name="upload" enctype="multipart/form-data" method="post">
    Nome album: <input type="text" name="nome"><br>
    Numero foto: <input type="text" name="num_foto" size="2"><input type="button" value="ok" onclick="crea()"><br>
    <div id="foto"></div>
    <input type="reset" value="Resetta">
    <input type="submit" value="Invia">
    </form>
    <?php
    } else {
    mkdir("immagini/fotogallery/".$_POST['nome']."/");
    $dir = "immagini/fotogallery/".$_POST['nome']."/";
    for(
    $i=1;$i<=$_POST['num_foto'];$i++) {
    $name = basename($_FILES['img'.$i]['name']);
    if(
    move_uploaded_file($_FILES['img'.$i]['tmp_name'], $dir.$name));
    echo
    "File numero {$i} caricato<br>";
    }
    }
    ?>
    </body>
    </html>
    Devi solo aggiungerci un po' di grafica e qualche controllo sui campi
    Ultima modifica di gabryhacker : 01-06-2009 alle ore 10.10.07

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Hai fatto il debug

    Con cosa?
    Con le echo oppure c'é proprio un programma ???

    Se c'é un programma mi puoi dire come si chiama?????

    Grazie,

    Ciao!

  14. #14
    Guest

    Predefinito

    L'ho fatto con gli echo
    Guarda il mio edit

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,186

    Predefinito

    Grazie!

    EDIT:

    Se a qualcuno servisse, questo è funzionante:

    Codice PHP:
    <?php
    session_start
    ();
    if(
    $_SESSION['ok'] != 1)
    {
    header("Location: impostazioni.php");
    die();
    }
    ?>
    <html>
    <head>
    <style type="text/css">
    <!--
    #uploadtore
    {
    text-align : center;
    }
    -->
    </style>
    <title>Carica album</title>
    <script language="Javascript">
    function crea()
    {
    document.getElementById('foto').innerHTML = '';
    for(i=1;i<=document.upload.num_foto.value;i++)
    document.getElementById('foto').innerHTML += "Immagine "+i+": <input name='img"+i+"' type='file'><br>";
    }
    </script>
    </head>
    <body bgcolor='#000000'>
    <?php
    if(!isset($_POST['nome']))
    {
    ?>
    <div id='uploadtore'>
    <form name="upload" enctype="multipart/form-data" method="post">
    <font color="#33FF00">Nome album: </font><input type="text" name="nome"><br>
    <font color="#33FF00">Numero foto: </font><input type="text" name="num_foto" size="2"><input type="button" value="ok" onClick="crea()"><br>
    <div id="foto"></div>
    <input type="reset" value="Resetta">
    <input type="submit" value="Carica">
    </form>
    </div>
    <?php
    }
    else
    {

    mkdir("immagini/fotogallery/".$_POST['nome']."/");
    $dir = "immagini/fotogallery/".$_POST['nome']."/";
    $caricate = 0;
    $rinominate = 0;
    for(
    $i=1;$i<=$_POST['num_foto'];$i++)
    {
    $name = basename($_FILES['img'.$i]['name']);
    if(
    move_uploaded_file($_FILES['img'.$i]['tmp_name'], $dir.$name));
    $caricate++;
    if(
    rename($dir.$name,$dir.$i.".JPG"))
    $rinominate++;
    }
    ?>
    <html>
    <head>
    <style type="text/css">
    <!--
    #risultato
    {
    text-align : center;
    }
    -->
    </style>
    <title>
    <?php echo "$caricate"; ?> foto caricate!
    </title>
    </head>
    <body bgcolor='Red'>
    <div id='risultato'>
    <font color="#33FF00">Sono state caricate <?php echo "$caricate"; ?> immagini con successo!</font><br>
    <font color="#33FF00">Sono state rinominate <?php echo "$rinominate"; ?> immagini con successo!</font>
    </div>
    </body>
    </html>
    <?php
    }
    ?>
    </body>
    </html>
    @gabryhacker: l'ho un pò modificato e l'ho scritto al "mio modo": altrimenti quando lo andrò a rivedere non ci capirò niente

    Grazie,

    Ciao!
    Ultima modifica di alemoppo : 01-06-2009 alle ore 11.22.54

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •